forked from OSchip/llvm-project
[GlobalOpt] Pass DTU to removeUnreachableBlocks instead of recomputing.
removeUnreachableBlocks knows how to preserve the DomTree, so make use of it instead of re-computing the DT. Reviewers: davide, kuhar, brzycki Reviewed By: davide, kuhar Differential Revision: https://reviews.llvm.org/D68298 llvm-svn: 373430
This commit is contained in:
parent
167b0529be
commit
70f7003548
|
@ -2285,14 +2285,10 @@ OptimizeFunctions(Module &M,
|
||||||
// So, remove unreachable blocks from the function, because a) there's
|
// So, remove unreachable blocks from the function, because a) there's
|
||||||
// no point in analyzing them and b) GlobalOpt should otherwise grow
|
// no point in analyzing them and b) GlobalOpt should otherwise grow
|
||||||
// some more complicated logic to break these cycles.
|
// some more complicated logic to break these cycles.
|
||||||
// Removing unreachable blocks might invalidate the dominator so we
|
|
||||||
// recalculate it.
|
|
||||||
if (!F->isDeclaration()) {
|
if (!F->isDeclaration()) {
|
||||||
if (removeUnreachableBlocks(*F)) {
|
auto &DT = LookupDomTree(*F);
|
||||||
auto &DT = LookupDomTree(*F);
|
DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Lazy);
|
||||||
DT.recalculate(*F);
|
Changed |= removeUnreachableBlocks(*F, nullptr, &DTU);
|
||||||
Changed = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Changed |= processGlobal(*F, GetTLI, LookupDomTree);
|
Changed |= processGlobal(*F, GetTLI, LookupDomTree);
|
||||||
|
|
Loading…
Reference in New Issue