Commit 70f70035 authored by Florian Hahn's avatar Florian Hahn
Browse files

[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
parent 167b0529
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -2285,14 +2285,10 @@ OptimizeFunctions(Module &M,
    // So, remove unreachable blocks from the function, because a) there's
    // no point in analyzing them and b) GlobalOpt should otherwise grow
    // some more complicated logic to break these cycles.
    // Removing unreachable blocks might invalidate the dominator so we
    // recalculate it.
    if (!F->isDeclaration()) {
      if (removeUnreachableBlocks(*F)) {
      auto &DT = LookupDomTree(*F);
        DT.recalculate(*F);
        Changed = true;
      }
      DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Lazy);
      Changed |= removeUnreachableBlocks(*F, nullptr, &DTU);
    }

    Changed |= processGlobal(*F, GetTLI, LookupDomTree);