[PATCH] D40146: [JumpThreading] Preservation of DT and LVI across the pass
Jakub Kuderski via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 11 17:49:45 PST 2018
kuhar accepted this revision.
kuhar added a comment.
Thanks for the tests, they look good to me. Found only some nits.
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:10
+
+#include "CFGBuilder.h"
+#include "llvm/AsmParser/Parser.h"
----------------
Unused?
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:57
+ DeferredDominance DDT(DT);
+ DDT.flush().verifyDomTree();
+
----------------
While unlikely it makes a difference, it would be better to use `ASSERT(DDT.flush().verify())` instead -- it's able to catch much more errors and explain them. And the old verifier asserts upon failure, which can be surprising.
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:70
+
+ // delete edge bb0 -> bb3
+ // Push the update twice to verify duplicate entries are discarded.
----------------
Nit: s/delete/Delete + missing comma at the end
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:95
+ // BranchInst::Create() call above.
+ EXPECT_EQ(dyn_cast<UnreachableInst>(BB3->getTerminator()), nullptr);
+ EXPECT_EQ(DDT.pendingDeletedBB(BB3), false);
----------------
`!isa<UnreachableInst>` would be more readable, or `ASSERT_NOT(isa<...>(...))`, if the library supports is.
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:99
+ EXPECT_EQ(DDT.pendingDeletedBB(BB3), true);
+ EXPECT_NE(dyn_cast<UnreachableInst>(BB3->getTerminator()), nullptr);
+ EXPECT_EQ(BB3->getParent(), F);
----------------
`!isa<UnreachableInst>` would be more readable
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:105
+ DDT.applyUpdates(Updates);
+ DDT.flush().verifyDomTree();
+}
----------------
Better to use `ASSERT(...verify())`
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:132
+ DeferredDominance DDT(DT);
+ DDT.flush().verifyDomTree();
+
----------------
verify()
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:211
+ DDT.recalculate(*F);
+ DDT.flush().verifyDomTree();
+
----------------
verify()
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:223
+ {DominatorTree::Insert, NewEntry, BB1}});
+ DDT.flush().verifyDomTree();
+
----------------
verify()
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:226
+ // Now remove bb0 from F.
+ EXPECT_EQ(dyn_cast<UnreachableInst>(BB0->getTerminator()), nullptr);
+ EXPECT_EQ(DDT.pendingDeletedBB(BB0), false);
----------------
!isa
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:230
+ EXPECT_EQ(DDT.pendingDeletedBB(BB0), true);
+ EXPECT_NE(dyn_cast<UnreachableInst>(BB0->getTerminator()), nullptr);
+ EXPECT_EQ(BB0->getParent(), F);
----------------
!isa
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:237
+ DDT.recalculate(*F);
+ DDT.flush().verifyDomTree();
+}
----------------
verify()
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:306
+ // method converts bb2's TI into "unreachable".
+ EXPECT_EQ(dyn_cast<UnreachableInst>(BB2->getTerminator()), nullptr);
+ EXPECT_EQ(DDT.pendingDeletedBB(BB2), false);
----------------
!isa
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:329
+ // method converts bb1's TI into "unreachable".
+ EXPECT_EQ(dyn_cast<UnreachableInst>(BB1->getTerminator()), nullptr);
+ EXPECT_EQ(DDT.pendingDeletedBB(BB1), false);
----------------
!isa
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:333
+ EXPECT_EQ(DDT.pendingDeletedBB(BB1), true);
+ EXPECT_NE(dyn_cast<UnreachableInst>(BB1->getTerminator()), nullptr);
+ EXPECT_EQ(BB1->getParent(), F);
----------------
isa
================
Comment at: llvm/unittests/IR/DeferredDominanceTest.cpp:344
+ DDT.applyUpdates(Updates);
+ DDT.flush().verifyDomTree();
+}
----------------
verify()
https://reviews.llvm.org/D40146
More information about the llvm-commits
mailing list