Index: polly/trunk/include/polly/ScopPass.h =================================================================== --- polly/trunk/include/polly/ScopPass.h +++ polly/trunk/include/polly/ScopPass.h @@ -128,6 +128,7 @@ struct ScopStandardAnalysisResults { DominatorTree &DT; + ScopInfo &SI; ScalarEvolution &SE; LoopInfo &LI; RegionInfo &RI; @@ -161,14 +162,15 @@ if (Scops.empty()) return PA; - ScopAnalysisManager &SAM = - AM.getResult(F).getManager(); - ScopStandardAnalysisResults AR = {AM.getResult(F), + AM.getResult(F), AM.getResult(F), AM.getResult(F), AM.getResult(F)}; + ScopAnalysisManager &SAM = + AM.getResult(F).getManager(); + SmallPriorityWorklist Worklist; SPMUpdater Updater{Worklist, SAM}; @@ -186,6 +188,12 @@ PA.preserveSet>(); PA.preserve(); + PA.preserve(); + PA.preserve(); + PA.preserve(); + PA.preserve(); + PA.preserve(); + PA.preserve(); return PA; } Index: polly/trunk/lib/Analysis/ScopPass.cpp =================================================================== --- polly/trunk/lib/Analysis/ScopPass.cpp +++ polly/trunk/lib/Analysis/ScopPass.cpp @@ -76,12 +76,10 @@ // First, check whether our ScopInfo is about to be invalidated auto PAC = PA.getChecker(); if (!(PAC.preserved() || PAC.preservedSet>() || - Inv.invalidate(F, PA) || + Inv.invalidate(F, PA) || Inv.invalidate(F, PA) || Inv.invalidate(F, PA) || - Inv.invalidate(F, PA) || - Inv.invalidate(F, PA) || - Inv.invalidate(F, PA))) { + Inv.invalidate(F, PA))) { // As everything depends on ScopInfo, we must drop all existing results for (auto &S : *SI)