[llvm] [SSAUpdaterBulk] Add PHI simplification pass. (PR #132004)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 6 12:42:17 PDT 2025


================
@@ -223,3 +224,78 @@ void SSAUpdaterBulk::RewriteAllUses(DominatorTree *DT,
     }
   }
 }
+
+bool SSAUpdaterBulk::simplifyPass(SmallVectorImpl<PHINode *> &Worklist) {
+  if (Worklist.empty())
+    return false;
+
+  const DataLayout &DL = Worklist.front()->getParent()->getDataLayout();
+  bool Change = false;
+  for (PHINode *&PHI : Worklist) {
+    if (Value *Replacement = simplifyInstruction(PHI, DL)) {
+      PHI->replaceAllUsesWith(Replacement);
+      PHI->eraseFromParent();
+      PHI = nullptr; // Mark as removed
+      Change = true;
+    }
+  }
+  return Change;
+}
+
+bool SSAUpdaterBulk::deduplicatePass(const SmallVectorImpl<PHINode *> &Worklist,
+                                     SmallPtrSetImpl<PHINode *> &PHIToRemove) {
+
+  auto FindFirstNonPHIIt = [](BasicBlock *BB) {
----------------
nikic wrote:

Isn't this just `BB->getFirstNonPHIIt()`?

https://github.com/llvm/llvm-project/pull/132004


More information about the llvm-commits mailing list