diff options
author | Philip Reames <listmail@philipreames.com> | 2021-01-04 09:50:47 -0800 |
---|---|---|
committer | Philip Reames <listmail@philipreames.com> | 2021-01-04 09:50:47 -0800 |
commit | 7c63aac7bd4e5ce3402f2ef7c1d5b66047230147 (patch) | |
tree | 8f363a35a72f75b958f95744cd266eca0b765e96 /llvm/lib/Transforms/Utils/LoopUtils.cpp | |
parent | dd6bb367d19e3bf18353e40de54d35480999a930 (diff) | |
download | llvm-7c63aac7bd4e5ce3402f2ef7c1d5b66047230147.zip llvm-7c63aac7bd4e5ce3402f2ef7c1d5b66047230147.tar.gz llvm-7c63aac7bd4e5ce3402f2ef7c1d5b66047230147.tar.bz2 |
Revert "[LoopDeletion] Break backedge of loops when known not taken"
This reverts commit dd6bb367d19e3bf18353e40de54d35480999a930.
Multi-stage builders are showing an assertion failure w/LCSSA not being preserved on entry to IndVars. Reason isn't clear, reverting while investigating.
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUtils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUtils.cpp | 31 |
1 files changed, 0 insertions, 31 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUtils.cpp b/llvm/lib/Transforms/Utils/LoopUtils.cpp index 4f98995..96f1d42 100644 --- a/llvm/lib/Transforms/Utils/LoopUtils.cpp +++ b/llvm/lib/Transforms/Utils/LoopUtils.cpp @@ -756,37 +756,6 @@ void llvm::deleteDeadLoop(Loop *L, DominatorTree *DT, ScalarEvolution *SE, } } -void llvm::breakLoopBackedge(Loop *L, DominatorTree &DT, ScalarEvolution &SE, - LoopInfo &LI, MemorySSA *MSSA) { - - auto *Latch = L->getLoopLatch(); - assert(Latch); - auto *Header = L->getHeader(); - - SE.forgetLoop(L); - - // Note: By splitting the backedge, and then explicitly making it unreachable - // we gracefully handle corner cases such as non-bottom tested loops and the - // like. We also have the benefit of being able to reuse existing well tested - // code. It might be worth special casing the common bottom tested case at - // some point to avoid code churn. - - std::unique_ptr<MemorySSAUpdater> MSSAU; - if (MSSA) - MSSAU = std::make_unique<MemorySSAUpdater>(MSSA); - - auto *BackedgeBB = SplitEdge(Latch, Header, &DT, &LI, MSSAU.get()); - - DomTreeUpdater DTU(&DT, DomTreeUpdater::UpdateStrategy::Eager); - (void)changeToUnreachable(BackedgeBB->getTerminator(), /*UseTrap*/false, - /*PreserveLCSSA*/true, &DTU, MSSAU.get()); - - // Erase (and destroy) this loop instance. Handles relinking sub-loops - // and blocks within the loop as needed. - LI.erase(L); -} - - /// Checks if \p L has single exit through latch block except possibly /// "deoptimizing" exits. Returns branch instruction terminating the loop /// latch if above check is successful, nullptr otherwise. |