[PATCH] D48923: [Dominators] Add DomTreeUpdater constructor from DT* and PDT*

Chijun Sima via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 4 02:22:50 PDT 2018


NutshellySima created this revision.
NutshellySima added reviewers: kuhar, brzycki, dmgreen.
Herald added a subscriber: llvm-commits.

Previously, if a function accepts an optional DT pointer,

  void Foo (.., DominatorTree * DT = nullptr) {
    ...
    if(DT)
      DomTreeUpdater(*DT, ...).insertEdge(A, B);
    if(DT){
      DomTreeUpdater DTU(*DT, ...);
      ... // Construct the update vector and applyUpdates
    }
    ...
    if(DT){
      DomTreeUpdater DTU(*DT, ...);
      ... // Construct the update vector and applyUpdates
    }
  }

After this patch, it can be simplified as

  void Foo (.., DominatorTree * DT = nullptr) {
    DomTreeUpdater DTU(DT, ...);
    ...
    DTU.insertEdge(A, B);
    if(DT){
      ... // Construct the update vector and applyUpdates
    }
    ...
    if(DT){
      ... // Construct the update vector and applyUpdates
    }
  }


Repository:
  rL LLVM

https://reviews.llvm.org/D48923

Files:
  include/llvm/IR/DomTreeUpdater.h
  unittests/IR/DomTreeUpdaterTest.cpp


Index: unittests/IR/DomTreeUpdaterTest.cpp
===================================================================
--- unittests/IR/DomTreeUpdaterTest.cpp
+++ unittests/IR/DomTreeUpdaterTest.cpp
@@ -235,7 +235,8 @@
 
   // Make the DTU.
   DominatorTree DT(*F);
-  DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Lazy);
+  PostDominatorTree *PDT = nullptr;
+  DomTreeUpdater DTU(&DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy);
   ASSERT_TRUE(DTU.hasDomTree());
   ASSERT_FALSE(DTU.hasPostDomTree());
   ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy);
@@ -323,7 +324,8 @@
 
   // Make the DTU.
   DominatorTree DT(*F);
-  DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Lazy);
+  PostDominatorTree *PDT = nullptr;
+  DomTreeUpdater DTU(&DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy);
   ASSERT_TRUE(DTU.hasDomTree());
   ASSERT_FALSE(DTU.hasPostDomTree());
   ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy);
@@ -449,7 +451,7 @@
   // Make the DTU.
   DominatorTree DT(*F);
   PostDominatorTree PDT(*F);
-  DomTreeUpdater DTU(DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy);
+  DomTreeUpdater DTU(&DT, &PDT, DomTreeUpdater::UpdateStrategy::Lazy);
   ASSERT_TRUE(DTU.hasDomTree());
   ASSERT_TRUE(DTU.hasPostDomTree());
   ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy);
Index: include/llvm/IR/DomTreeUpdater.h
===================================================================
--- include/llvm/IR/DomTreeUpdater.h
+++ include/llvm/IR/DomTreeUpdater.h
@@ -31,11 +31,18 @@
   explicit DomTreeUpdater(UpdateStrategy Strategy_) : Strategy(Strategy_) {}
   DomTreeUpdater(DominatorTree &DT_, UpdateStrategy Strategy_)
       : DT(&DT_), Strategy(Strategy_) {}
+  DomTreeUpdater(DominatorTree *DT_, UpdateStrategy Strategy_)
+      : DT(DT_), Strategy(Strategy_) {}
   DomTreeUpdater(PostDominatorTree &PDT_, UpdateStrategy Strategy_)
       : PDT(&PDT_), Strategy(Strategy_) {}
+  DomTreeUpdater(PostDominatorTree *PDT_, UpdateStrategy Strategy_)
+      : PDT(PDT_), Strategy(Strategy_) {}
   DomTreeUpdater(DominatorTree &DT_, PostDominatorTree &PDT_,
                  UpdateStrategy Strategy_)
       : DT(&DT_), PDT(&PDT_), Strategy(Strategy_) {}
+  DomTreeUpdater(DominatorTree *DT_, PostDominatorTree *PDT_,
+                 UpdateStrategy Strategy_)
+      : DT(DT_), PDT(PDT_), Strategy(Strategy_) {}
 
   ~DomTreeUpdater() { flush(); }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D48923.154070.patch
Type: text/x-patch
Size: 2431 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180704/dff49ad2/attachment.bin>


More information about the llvm-commits mailing list