forked from OSchip/llvm-project
[LoopUnrollAndJam] Use Lazy strategy for DTU.
We can also apply the earlier updates to the lazy DTU, instead of applying them directly. Reviewers: kuhar, brzycki, asbirlea, SjoerdMeijer Reviewed By: brzycki, asbirlea, SjoerdMeijer Differential Revision: https://reviews.llvm.org/D66918 llvm-svn: 370391
This commit is contained in:
parent
11802ccc9f
commit
f9cdb98f40
|
@ -517,6 +517,7 @@ LoopUnrollResult llvm::UnrollAndJamLoop(
|
|||
movePHIs(AftBlocksFirst[It], AftBlocksFirst[0]);
|
||||
}
|
||||
|
||||
DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Lazy);
|
||||
// Dominator Tree. Remove the old links between Fore, Sub and Aft, adding the
|
||||
// new ones required.
|
||||
if (Count != 1) {
|
||||
|
@ -530,7 +531,7 @@ LoopUnrollResult llvm::UnrollAndJamLoop(
|
|||
ForeBlocksLast.back(), SubLoopBlocksFirst[0]);
|
||||
DTUpdates.emplace_back(DominatorTree::UpdateKind::Insert,
|
||||
SubLoopBlocksLast.back(), AftBlocksFirst[0]);
|
||||
DT->applyUpdates(DTUpdates);
|
||||
DTU.applyUpdatesPermissive(DTUpdates);
|
||||
}
|
||||
|
||||
// Merge adjacent basic blocks, if possible.
|
||||
|
@ -538,7 +539,6 @@ LoopUnrollResult llvm::UnrollAndJamLoop(
|
|||
MergeBlocks.insert(ForeBlocksLast.begin(), ForeBlocksLast.end());
|
||||
MergeBlocks.insert(SubLoopBlocksLast.begin(), SubLoopBlocksLast.end());
|
||||
MergeBlocks.insert(AftBlocksLast.begin(), AftBlocksLast.end());
|
||||
DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Eager);
|
||||
while (!MergeBlocks.empty()) {
|
||||
BasicBlock *BB = *MergeBlocks.begin();
|
||||
BranchInst *Term = dyn_cast<BranchInst>(BB->getTerminator());
|
||||
|
@ -555,6 +555,8 @@ LoopUnrollResult llvm::UnrollAndJamLoop(
|
|||
} else
|
||||
MergeBlocks.erase(BB);
|
||||
}
|
||||
// Apply updates to the DomTree.
|
||||
DT = &DTU.getDomTree();
|
||||
|
||||
// At this point, the code is well formed. We now do a quick sweep over the
|
||||
// inserted code, doing constant propagation and dead code elimination as we
|
||||
|
|
Loading…
Reference in New Issue