From: Chijun Sima Date: Thu, 12 Jul 2018 04:08:14 +0000 (+0000) Subject: [Dominators] Add isUpdateLazy() method to the DomTreeUpdater X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=04d4b7fd45bc73981d9a6faaec6eee98696b5e94;p=llvm [Dominators] Add isUpdateLazy() method to the DomTreeUpdater Summary: Previously, when people need to deal with DTU with different UpdateStrategy using different actions, they need to ``` if (DTU.getUpdateStrategy() == DomTreeUpdater::UpdateStrategy::Lazy) { ... } if (DTU.getUpdateStrategy() == DomTreeUpdater::UpdateStrategy::Eager) { ... } ``` After the patch, they can avoid code patterns above ``` if (DTU.isUpdateLazy()){ ... } if (!DTU.isUpdateLazy()){ ... } ``` Reviewers: kuhar, brzycki, dmgreen Reviewed By: kuhar Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D49056 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336886 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/IR/DomTreeUpdater.h b/include/llvm/IR/DomTreeUpdater.h index 6278dd5d870..089c8528794 100644 --- a/include/llvm/IR/DomTreeUpdater.h +++ b/include/llvm/IR/DomTreeUpdater.h @@ -46,8 +46,11 @@ public: ~DomTreeUpdater() { flush(); } - /// Returns the UpdateStrategy of the class instance. - UpdateStrategy getUpdateStrategy() const { return Strategy; }; + /// Returns true if the current strategy is Lazy. + bool isLazy() const { return Strategy == UpdateStrategy::Lazy; }; + + /// Returns true if the current strategy is Eager. + bool isEager() const { return Strategy == UpdateStrategy::Eager; }; /// Returns true if it holds a DominatorTree. bool hasDomTree() const { return DT != nullptr; } diff --git a/unittests/IR/DomTreeUpdaterTest.cpp b/unittests/IR/DomTreeUpdaterTest.cpp index 242eee7d09e..10d84442617 100644 --- a/unittests/IR/DomTreeUpdaterTest.cpp +++ b/unittests/IR/DomTreeUpdaterTest.cpp @@ -58,7 +58,8 @@ TEST(DomTreeUpdater, EagerUpdateBasicOperations) { ASSERT_TRUE(DTU.hasDomTree()); ASSERT_TRUE(DTU.hasPostDomTree()); - ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Eager); + ASSERT_TRUE(DTU.isEager()); + ASSERT_FALSE(DTU.isLazy()); ASSERT_TRUE(DTU.getDomTree().verify()); ASSERT_TRUE(DTU.getPostDomTree().verify()); ASSERT_FALSE(DTU.hasPendingUpdates()); @@ -166,7 +167,8 @@ TEST(DomTreeUpdater, EagerUpdateReplaceEntryBB) { DomTreeUpdater DTU(DT, PDT, DomTreeUpdater::UpdateStrategy::Eager); ASSERT_TRUE(DTU.hasDomTree()); ASSERT_TRUE(DTU.hasPostDomTree()); - ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Eager); + ASSERT_TRUE(DTU.isEager()); + ASSERT_FALSE(DTU.isLazy()); ASSERT_TRUE(DT.verify()); ASSERT_TRUE(PDT.verify()); @@ -239,7 +241,8 @@ TEST(DomTreeUpdater, LazyUpdateDTBasicOperations) { DomTreeUpdater DTU(&DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy); ASSERT_TRUE(DTU.hasDomTree()); ASSERT_FALSE(DTU.hasPostDomTree()); - ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy); + ASSERT_FALSE(DTU.isEager()); + ASSERT_TRUE(DTU.isLazy()); ASSERT_TRUE(DTU.getDomTree().verify()); Function::iterator FI = F->begin(); @@ -327,7 +330,8 @@ TEST(DomTreeUpdater, LazyUpdateDTInheritedPreds) { DomTreeUpdater DTU(&DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy); ASSERT_TRUE(DTU.hasDomTree()); ASSERT_FALSE(DTU.hasPostDomTree()); - ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy); + ASSERT_FALSE(DTU.isEager()); + ASSERT_TRUE(DTU.isLazy()); ASSERT_TRUE(DTU.getDomTree().verify()); Function::iterator FI = F->begin(); @@ -453,7 +457,8 @@ TEST(DomTreeUpdater, LazyUpdateBasicOperations) { DomTreeUpdater DTU(&DT, &PDT, DomTreeUpdater::UpdateStrategy::Lazy); ASSERT_TRUE(DTU.hasDomTree()); ASSERT_TRUE(DTU.hasPostDomTree()); - ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy); + ASSERT_FALSE(DTU.isEager()); + ASSERT_TRUE(DTU.isLazy()); ASSERT_TRUE(DTU.getDomTree().verify()); ASSERT_TRUE(DTU.getPostDomTree().verify()); @@ -535,7 +540,8 @@ TEST(DomTreeUpdater, LazyUpdateReplaceEntryBB) { DomTreeUpdater DTU(DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy); ASSERT_TRUE(DTU.hasDomTree()); ASSERT_TRUE(DTU.hasPostDomTree()); - ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy); + ASSERT_FALSE(DTU.isEager()); + ASSERT_TRUE(DTU.isLazy()); ASSERT_TRUE(DTU.getDomTree().verify()); ASSERT_TRUE(DTU.getPostDomTree().verify()); @@ -624,7 +630,8 @@ TEST(DomTreeUpdater, LazyUpdateStepTest) { ASSERT_TRUE(DTU.hasDomTree()); ASSERT_TRUE(DTU.hasPostDomTree()); - ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy); + ASSERT_FALSE(DTU.isEager()); + ASSERT_TRUE(DTU.isLazy()); ASSERT_TRUE(DTU.getDomTree().verify()); ASSERT_TRUE(DTU.getPostDomTree().verify()); ASSERT_FALSE(DTU.hasPendingUpdates());