diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -13981,9 +13981,6 @@ for (auto &V : Values) { auto CachedDisposition = V.getInt(); const auto *Loop = V.getPointer(); - // TODO: Make sure LoopDispositions contains no invalid loops. - if (!ValidLoops.contains(Loop)) - continue; const auto RecomputedDisposition = SE2.getLoopDisposition(S, Loop); if (CachedDisposition != RecomputedDisposition) { dbgs() << "Cached disposition of " << *S << " for loop " << *Loop diff --git a/llvm/lib/Transforms/Utils/LoopUtils.cpp b/llvm/lib/Transforms/Utils/LoopUtils.cpp --- a/llvm/lib/Transforms/Utils/LoopUtils.cpp +++ b/llvm/lib/Transforms/Utils/LoopUtils.cpp @@ -696,6 +696,7 @@ Loop *OutermostLoop = L->getOutermostLoop(); SE.forgetLoop(L); + SE.forgetBlockAndLoopDispositions(); std::unique_ptr MSSAU; if (MSSA)