[PATCH] D47441: SafepointIRVerifier should ignore dead blocks and dead edges

Anna Thomas via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 29 10:58:57 PDT 2018


anna added inline comments.


================
Comment at: lib/IR/SafepointIRVerifier.cpp:242
+/// without splitting critical edges. So the CFG is kept intact.
+class DeadBlocks : public SetVector<const BasicBlock *> {
+  const DominatorTree &DT;
----------------
This seems like a generally useful analysis to have outside of the safepoint IR Verifier. We should think of moving the code into Analysis. 

You mentioned it's taken from the GVN but modified to avoid splitting the critical edges. Could you please state that as a comment here: modified version from `GVN::addDeadBlock`. 



================
Comment at: lib/IR/SafepointIRVerifier.cpp:282
+      const BasicBlock *D = NewDead.pop_back_val();
+      if (isDeadBlock(D))
+        continue;
----------------
comment here that block maybe already dead if it's dominated by `NewDead` blocks processed earlier.


================
Comment at: lib/IR/SafepointIRVerifier.cpp:302
+  void processFoldableCondBr(const BranchInst *BI) {
+    if (!BI || BI->isUnconditional())
+      return;
----------------
Change to assert instead of check.


https://reviews.llvm.org/D47441





More information about the llvm-commits mailing list