diff options
Diffstat (limited to 'lib/Analysis/ScalarEvolution.cpp')
| -rw-r--r-- | lib/Analysis/ScalarEvolution.cpp | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index 5e566bcdaff4..44f1a6dde0d2 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -10012,6 +10012,18 @@ void ScalarEvolution::verify() const {    // TODO: Verify more things.  } +bool ScalarEvolution::invalidate( +    Function &F, const PreservedAnalyses &PA, +    FunctionAnalysisManager::Invalidator &Inv) { +  // Invalidate the ScalarEvolution object whenever it isn't preserved or one +  // of its dependencies is invalidated. +  auto PAC = PA.getChecker<ScalarEvolutionAnalysis>(); +  return !(PAC.preserved() || PAC.preservedSet<AllAnalysesOn<Function>>()) || +         Inv.invalidate<AssumptionAnalysis>(F, PA) || +         Inv.invalidate<DominatorTreeAnalysis>(F, PA) || +         Inv.invalidate<LoopAnalysis>(F, PA); +} +  AnalysisKey ScalarEvolutionAnalysis::Key;  ScalarEvolution ScalarEvolutionAnalysis::run(Function &F,  | 
