[llvm] [SSAUpdaterBulk] Add PHI simplification pass. (PR #150936)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 28 06:03:12 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions cpp,h -- llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp b/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
index 15783ccdf..2aa362032 100644
--- a/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
+++ b/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
@@ -255,9 +255,8 @@ PHIAreRefEachOther(const iterator_range<BasicBlock::phi_iterator> &NewPHIs) {
}
#endif
-bool
-EliminateNewDuplicatePHINodes(BasicBlock *BB,
- BasicBlock::phi_iterator FirstExistingPN) {
+bool EliminateNewDuplicatePHINodes(BasicBlock *BB,
+ BasicBlock::phi_iterator FirstExistingPN) {
auto NewPHIs = make_range(BB->phis().begin(), FirstExistingPN);
assert(!PHIAreRefEachOther(NewPHIs));
diff --git a/llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp b/llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp
index db96593c1..802118a60 100644
--- a/llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp
+++ b/llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp
@@ -375,7 +375,7 @@ TEST(SSAUpdaterBulk, SimplifyPHIs) {
}
bool EliminateNewDuplicatePHINodes(BasicBlock *BB,
- BasicBlock::phi_iterator FirstExistingPN);
+ BasicBlock::phi_iterator FirstExistingPN);
// Helper to run both versions on the same input.
static void RunEliminateNewDuplicatePHINode(
@@ -425,20 +425,21 @@ TEST(SSAUpdaterBulk, EliminateNewDuplicatePHINodes_OrderExisting) {
%u = add i32 %np0, %np1
ret void
}
- )", [](BasicBlock &BB, auto *ENDPN) {
- AssertingVH<PHINode> EP0 = getPhi(BB, 2);
- AssertingVH<PHINode> EP1 = getPhi(BB, 3);
- EXPECT_TRUE(ENDPN(&BB, getPhiIt(BB, 2)));
- // Expected:
- // %ep0 = phi i32 [ 1, %entry ]
- // %ep1 = phi i32 [ 1, %entry ]
- // %u = add i32 %ep0, %ep0
- EXPECT_EQ(getNumPHIs(BB), 2);
- Instruction &Add = *BB.getFirstNonPHIIt();
- EXPECT_EQ(Add.getOperand(0), EP0);
- EXPECT_EQ(Add.getOperand(1), EP0);
- (void)EP1; // Avoid "unused" warning.
- });
+ )",
+ [](BasicBlock &BB, auto *ENDPN) {
+ AssertingVH<PHINode> EP0 = getPhi(BB, 2);
+ AssertingVH<PHINode> EP1 = getPhi(BB, 3);
+ EXPECT_TRUE(ENDPN(&BB, getPhiIt(BB, 2)));
+ // Expected:
+ // %ep0 = phi i32 [ 1, %entry ]
+ // %ep1 = phi i32 [ 1, %entry ]
+ // %u = add i32 %ep0, %ep0
+ EXPECT_EQ(getNumPHIs(BB), 2);
+ Instruction &Add = *BB.getFirstNonPHIIt();
+ EXPECT_EQ(Add.getOperand(0), EP0);
+ EXPECT_EQ(Add.getOperand(1), EP0);
+ (void)EP1; // Avoid "unused" warning.
+ });
}
TEST(SSAUpdaterBulk, EliminateNewDuplicatePHINodes_OrderNew) {
@@ -454,23 +455,24 @@ TEST(SSAUpdaterBulk, EliminateNewDuplicatePHINodes_OrderNew) {
%u = add i32 %np0, %np1
ret void
}
- )", [](BasicBlock &BB, auto *ENDPN) {
- AssertingVH<PHINode> NP0 = getPhi(BB, 0);
- AssertingVH<PHINode> EP0 = getPhi(BB, 2);
- AssertingVH<PHINode> EP1 = getPhi(BB, 3);
- EXPECT_TRUE(ENDPN(&BB, getPhiIt(BB, 2)));
- // Expected:
- // %np0 = phi i32 [ 1, %entry ]
- // %ep0 = phi i32 [ 2, %entry ]
- // %ep1 = phi i32 [ 2, %entry ]
- // %u = add i32 %np0, %np0
- EXPECT_EQ(getNumPHIs(BB), 3);
- Instruction &Add = *BB.getFirstNonPHIIt();
- EXPECT_EQ(Add.getOperand(0), NP0);
- EXPECT_EQ(Add.getOperand(1), NP0);
- (void)EP0;
- (void)EP1; // Avoid "unused" warning.
- });
+ )",
+ [](BasicBlock &BB, auto *ENDPN) {
+ AssertingVH<PHINode> NP0 = getPhi(BB, 0);
+ AssertingVH<PHINode> EP0 = getPhi(BB, 2);
+ AssertingVH<PHINode> EP1 = getPhi(BB, 3);
+ EXPECT_TRUE(ENDPN(&BB, getPhiIt(BB, 2)));
+ // Expected:
+ // %np0 = phi i32 [ 1, %entry ]
+ // %ep0 = phi i32 [ 2, %entry ]
+ // %ep1 = phi i32 [ 2, %entry ]
+ // %u = add i32 %np0, %np0
+ EXPECT_EQ(getNumPHIs(BB), 3);
+ Instruction &Add = *BB.getFirstNonPHIIt();
+ EXPECT_EQ(Add.getOperand(0), NP0);
+ EXPECT_EQ(Add.getOperand(1), NP0);
+ (void)EP0;
+ (void)EP1; // Avoid "unused" warning.
+ });
}
TEST(SSAUpdaterBulk, EliminateNewDuplicatePHINodes_NewRefExisting) {
@@ -486,19 +488,21 @@ TEST(SSAUpdaterBulk, EliminateNewDuplicatePHINodes_NewRefExisting) {
%u = add i32 %np0, %np1
br label %testbb
}
- )", [](BasicBlock &BB, auto *ENDPN) {
- AssertingVH<PHINode> EP0 = getPhi(BB, 2);
- AssertingVH<PHINode> EP1 = getPhi(BB, 3);
- EXPECT_TRUE(ENDPN(&BB, getPhiIt(BB, 2)));
- // Expected:
- // %ep0 = phi i32 [ 1, %entry ], [ %ep0, %testbb ]
- // %ep1 = phi i32 [ 1, %entry ], [ %ep1, %testbb ]
- // %u = add i32 %ep0, %ep1
- EXPECT_EQ(getNumPHIs(BB), 2);
- Instruction &Add = *BB.getFirstNonPHIIt();
- EXPECT_EQ(Add.getOperand(0), EP0);
- EXPECT_EQ(Add.getOperand(1), EP1);
- });
+ )",
+ [](BasicBlock &BB, auto *ENDPN) {
+ AssertingVH<PHINode> EP0 = getPhi(BB, 2);
+ AssertingVH<PHINode> EP1 = getPhi(BB, 3);
+ EXPECT_TRUE(ENDPN(&BB, getPhiIt(BB, 2)));
+ // Expected:
+ // %ep0 = phi i32 [ 1, %entry ], [ %ep0,
+ // %testbb ] %ep1 = phi i32 [ 1, %entry ],
+ // [ %ep1, %testbb ] %u = add i32 %ep0,
+ // %ep1
+ EXPECT_EQ(getNumPHIs(BB), 2);
+ Instruction &Add = *BB.getFirstNonPHIIt();
+ EXPECT_EQ(Add.getOperand(0), EP0);
+ EXPECT_EQ(Add.getOperand(1), EP1);
+ });
}
TEST(SSAUpdaterBulk, EliminateNewDuplicatePHINodes_ExistingRefNew) {
@@ -514,17 +518,19 @@ TEST(SSAUpdaterBulk, EliminateNewDuplicatePHINodes_ExistingRefNew) {
%u = add i32 %np0, %np1
br label %testbb
}
- )", [](BasicBlock &BB, auto *ENDPN) {
- AssertingVH<PHINode> EP0 = getPhi(BB, 2);
- AssertingVH<PHINode> EP1 = getPhi(BB, 3);
- EXPECT_TRUE(ENDPN(&BB, getPhiIt(BB, 2)));
- // Expected:
- // %ep0 = phi i32 [ 1, %entry ], [ %ep0, %testbb ]
- // %ep1 = phi i32 [ 1, %entry ], [ %ep1, %testbb ]
- // %u = add i32 %ep0, %ep1
- EXPECT_EQ(getNumPHIs(BB), 2);
- Instruction &Add = *BB.getFirstNonPHIIt();
- EXPECT_EQ(Add.getOperand(0), EP0);
- EXPECT_EQ(Add.getOperand(1), EP1);
- });
+ )",
+ [](BasicBlock &BB, auto *ENDPN) {
+ AssertingVH<PHINode> EP0 = getPhi(BB, 2);
+ AssertingVH<PHINode> EP1 = getPhi(BB, 3);
+ EXPECT_TRUE(ENDPN(&BB, getPhiIt(BB, 2)));
+ // Expected:
+ // %ep0 = phi i32 [ 1, %entry ], [ %ep0,
+ // %testbb ] %ep1 = phi i32 [ 1, %entry ],
+ // [ %ep1, %testbb ] %u = add i32 %ep0,
+ // %ep1
+ EXPECT_EQ(getNumPHIs(BB), 2);
+ Instruction &Add = *BB.getFirstNonPHIIt();
+ EXPECT_EQ(Add.getOperand(0), EP0);
+ EXPECT_EQ(Add.getOperand(1), EP1);
+ });
}
\ No newline at end of file
``````````
</details>
https://github.com/llvm/llvm-project/pull/150936
More information about the llvm-commits
mailing list