Skip to content

Commit bea19a9

Browse files
committed
[Dominators] Add DomTreeUpdater constructor from DT* and PDT*
Summary: 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 } } ``` Patch by Chijun Sima <simachijun@gmail.com>. Reviewers: kuhar, brzycki, dmgreen Reviewed By: kuhar Author: NutshellySima Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D48923 llvm-svn: 336294
1 parent 9c2e7ce commit bea19a9

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

llvm/include/llvm/IR/DomTreeUpdater.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,18 @@ class DomTreeUpdater {
3131
explicit DomTreeUpdater(UpdateStrategy Strategy_) : Strategy(Strategy_) {}
3232
DomTreeUpdater(DominatorTree &DT_, UpdateStrategy Strategy_)
3333
: DT(&DT_), Strategy(Strategy_) {}
34+
DomTreeUpdater(DominatorTree *DT_, UpdateStrategy Strategy_)
35+
: DT(DT_), Strategy(Strategy_) {}
3436
DomTreeUpdater(PostDominatorTree &PDT_, UpdateStrategy Strategy_)
3537
: PDT(&PDT_), Strategy(Strategy_) {}
38+
DomTreeUpdater(PostDominatorTree *PDT_, UpdateStrategy Strategy_)
39+
: PDT(PDT_), Strategy(Strategy_) {}
3640
DomTreeUpdater(DominatorTree &DT_, PostDominatorTree &PDT_,
3741
UpdateStrategy Strategy_)
3842
: DT(&DT_), PDT(&PDT_), Strategy(Strategy_) {}
43+
DomTreeUpdater(DominatorTree *DT_, PostDominatorTree *PDT_,
44+
UpdateStrategy Strategy_)
45+
: DT(DT_), PDT(PDT_), Strategy(Strategy_) {}
3946

4047
~DomTreeUpdater() { flush(); }
4148

llvm/unittests/IR/DomTreeUpdaterTest.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,8 @@ TEST(DomTreeUpdater, LazyUpdateDTBasicOperations) {
235235

236236
// Make the DTU.
237237
DominatorTree DT(*F);
238-
DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Lazy);
238+
PostDominatorTree *PDT = nullptr;
239+
DomTreeUpdater DTU(&DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy);
239240
ASSERT_TRUE(DTU.hasDomTree());
240241
ASSERT_FALSE(DTU.hasPostDomTree());
241242
ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy);
@@ -323,7 +324,8 @@ TEST(DomTreeUpdater, LazyUpdateDTInheritedPreds) {
323324

324325
// Make the DTU.
325326
DominatorTree DT(*F);
326-
DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Lazy);
327+
PostDominatorTree *PDT = nullptr;
328+
DomTreeUpdater DTU(&DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy);
327329
ASSERT_TRUE(DTU.hasDomTree());
328330
ASSERT_FALSE(DTU.hasPostDomTree());
329331
ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy);
@@ -449,7 +451,7 @@ TEST(DomTreeUpdater, LazyUpdateBasicOperations) {
449451
// Make the DTU.
450452
DominatorTree DT(*F);
451453
PostDominatorTree PDT(*F);
452-
DomTreeUpdater DTU(DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy);
454+
DomTreeUpdater DTU(&DT, &PDT, DomTreeUpdater::UpdateStrategy::Lazy);
453455
ASSERT_TRUE(DTU.hasDomTree());
454456
ASSERT_TRUE(DTU.hasPostDomTree());
455457
ASSERT_EQ(DTU.getUpdateStrategy(), DomTreeUpdater::UpdateStrategy::Lazy);

0 commit comments

Comments
 (0)