Index: lib/Transforms/Scalar/LoopUnswitch.cpp =================================================================== --- lib/Transforms/Scalar/LoopUnswitch.cpp +++ lib/Transforms/Scalar/LoopUnswitch.cpp @@ -1201,8 +1201,10 @@ << " blocks] in Function " << F->getName() << " when '" << *Val << "' == " << *LIC << "\n"); + // We are going to make modifications to loop's block which can also affect + // cached invariants for its parent loops. if (auto *SEWP = getAnalysisIfAvailable()) - SEWP->getSE().forgetLoop(L); + SEWP->getSE().forgetTopmostLoop(L); LoopBlocks.clear(); NewBlocks.clear();