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 @@ -11986,6 +11986,14 @@ std::abort(); } } + + // Check for SCEV expressions referencing invalid/deleted loops. + for (auto &KV : ValueExprMap) { + auto *AR = dyn_cast(KV.second); + if (!AR) + continue; + assert(!AR->getLoop()->isInvalid() && "AddRec references invalid loop"); + } } bool ScalarEvolution::invalidate(