diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2019-05-05 18:59:39 +0000 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2019-05-05 18:59:39 +0000 |
commit | 1a1b92217787842d06a1d9d68529763a11338a47 (patch) | |
tree | 21dc89c1be69f21baf8f5565e4a769606e7c948b /llvm/lib/Transforms | |
parent | e3b1d82b5302102c17ea465ca609cde2a49da314 (diff) | |
download | bcm5719-llvm-1a1b92217787842d06a1d9d68529763a11338a47.tar.gz bcm5719-llvm-1a1b92217787842d06a1d9d68529763a11338a47.zip |
[NFC] BasicBlock: refactor changePhiUses() out of replacePhiUsesWith(), use it
Summary:
It is a common thing to loop over every `PHINode` in some `BasicBlock`
and change old `BasicBlock` incoming block to a new `BasicBlock` incoming block.
`replaceSuccessorsPhiUsesWith()` already had code to do that,
it just wasn't a function.
So outline it into a new function, and use it.
Reviewers: chandlerc, craig.topper, spatel, danielcdh
Reviewed By: craig.topper
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61013
llvm-svn: 359996
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp | 6 | ||||
-rw-r--r-- | llvm/lib/Transforms/Scalar/LoopInterchange.cpp | 22 |
2 files changed, 10 insertions, 18 deletions
diff --git a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp index 92e3e9a0496..64a97f86a21 100644 --- a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp +++ b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp @@ -1325,8 +1325,7 @@ LoopConstrainer::RewrittenRangeInfo LoopConstrainer::changeIterationSpaceEnd( // The latch exit now has a branch from `RRI.ExitSelector' instead of // `LS.Latch'. The PHI nodes need to be updated to reflect that. - for (PHINode &PN : LS.LatchExit->phis()) - PN.replaceIncomingBlockWith(LS.Latch, RRI.ExitSelector); + LS.LatchExit->replacePhiUsesWith(LS.Latch, RRI.ExitSelector); return RRI; } @@ -1349,8 +1348,7 @@ BasicBlock *LoopConstrainer::createPreheader(const LoopStructure &LS, BasicBlock *Preheader = BasicBlock::Create(Ctx, Tag, &F, LS.Header); BranchInst::Create(LS.Header, Preheader); - for (PHINode &PN : LS.Header->phis()) - PN.replaceIncomingBlockWith(OldPreheader, Preheader); + LS.Header->replacePhiUsesWith(OldPreheader, Preheader); return Preheader; } diff --git a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp index 8347dbe4598..bde4ecaaa6c 100644 --- a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp +++ b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp @@ -1279,12 +1279,6 @@ static void moveBBContents(BasicBlock *FromBB, Instruction *InsertBefore) { FromBB->getTerminator()->getIterator()); } -static void updateIncomingBlock(BasicBlock *CurrBlock, BasicBlock *OldPred, - BasicBlock *NewPred) { - for (PHINode &PHI : CurrBlock->phis()) - PHI.replaceIncomingBlockWith(OldPred, NewPred); -} - /// Update BI to jump to NewBB instead of OldBB. Records updates to /// the dominator tree in DTUpdates, if DT should be preserved. static void updateSuccessor(BranchInst *BI, BasicBlock *OldBB, @@ -1349,7 +1343,7 @@ static void moveLCSSAPhis(BasicBlock *InnerExit, BasicBlock *InnerLatch, // Now adjust the incoming blocks for the LCSSA PHIs. // For PHIs moved from Inner's exit block, we need to replace Inner's latch // with the new latch. - updateIncomingBlock(InnerLatch, InnerLatch, OuterLatch); + InnerLatch->replacePhiUsesWith(InnerLatch, OuterLatch); } bool LoopInterchangeTransform::adjustLoopBranches() { @@ -1416,8 +1410,8 @@ bool LoopInterchangeTransform::adjustLoopBranches() { InnerLoopHeaderSuccessor, DTUpdates); // Adjust reduction PHI's now that the incoming block has changed. - updateIncomingBlock(InnerLoopHeaderSuccessor, InnerLoopHeader, - OuterLoopHeader); + InnerLoopHeaderSuccessor->replacePhiUsesWith(InnerLoopHeader, + OuterLoopHeader); updateSuccessor(InnerLoopHeaderBI, InnerLoopHeaderSuccessor, OuterLoopPreHeader, DTUpdates); @@ -1449,7 +1443,7 @@ bool LoopInterchangeTransform::adjustLoopBranches() { moveLCSSAPhis(InnerLoopLatchSuccessor, InnerLoopLatch, OuterLoopLatch); // For PHIs in the exit block of the outer loop, outer's latch has been // replaced by Inners'. - updateIncomingBlock(OuterLoopLatchSuccessor, OuterLoopLatch, InnerLoopLatch); + OuterLoopLatchSuccessor->replacePhiUsesWith(OuterLoopLatch, InnerLoopLatch); // Now update the reduction PHIs in the inner and outer loop headers. SmallVector<PHINode *, 4> InnerLoopPHIs, OuterLoopPHIs; @@ -1476,10 +1470,10 @@ bool LoopInterchangeTransform::adjustLoopBranches() { } // Update the incoming blocks for moved PHI nodes. - updateIncomingBlock(OuterLoopHeader, InnerLoopPreHeader, OuterLoopPreHeader); - updateIncomingBlock(OuterLoopHeader, InnerLoopLatch, OuterLoopLatch); - updateIncomingBlock(InnerLoopHeader, OuterLoopPreHeader, InnerLoopPreHeader); - updateIncomingBlock(InnerLoopHeader, OuterLoopLatch, InnerLoopLatch); + OuterLoopHeader->replacePhiUsesWith(InnerLoopPreHeader, OuterLoopPreHeader); + OuterLoopHeader->replacePhiUsesWith(InnerLoopLatch, OuterLoopLatch); + InnerLoopHeader->replacePhiUsesWith(OuterLoopPreHeader, InnerLoopPreHeader); + InnerLoopHeader->replacePhiUsesWith(OuterLoopLatch, InnerLoopLatch); return true; } |