diff options
| author | Philip Pfaffe <philip.pfaffe@gmail.com> | 2017-08-10 07:43:46 +0000 |
|---|---|---|
| committer | Philip Pfaffe <philip.pfaffe@gmail.com> | 2017-08-10 07:43:46 +0000 |
| commit | f43e7c2e9733448624fe05cd186cc440daf83e4b (patch) | |
| tree | 0ca16341a3ac523ebd41204e480fa8318cea4f1e /polly/lib/Analysis/ScopPass.cpp | |
| parent | 2f4e2e2758abc28ebc2215c293f5f77b7711ed89 (diff) | |
| download | bcm5719-llvm-f43e7c2e9733448624fe05cd186cc440daf83e4b.tar.gz bcm5719-llvm-f43e7c2e9733448624fe05cd186cc440daf83e4b.zip | |
[Polly][PM] Improve invalidation in the Scop-Pipeline
Summary:
During code generation for a Scop we modify the IR of a function.
While this shouldn't affect a Scop in the formal sense, the implementation
caches various information about the IR such as SCEV expressions for bounds or
parameters. This cached information needs to be updated or invalidated. To this
end, SPMUpdater allows passes to report when they've invalidated a Scop to the
PassManager, which will then flush and recompute all Scops. This in turn
invalidates all iterators, so references to Scops shouldn't be held.
Reviewers: grosser, Meinersbur, bollu
Reviewed By: grosser
Subscribers: llvm-commits, pollydev
Differential Revision: https://reviews.llvm.org/D36524
llvm-svn: 310551
Diffstat (limited to 'polly/lib/Analysis/ScopPass.cpp')
| -rw-r--r-- | polly/lib/Analysis/ScopPass.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/polly/lib/Analysis/ScopPass.cpp b/polly/lib/Analysis/ScopPass.cpp index cbbb8709238..d0f50167e25 100644 --- a/polly/lib/Analysis/ScopPass.cpp +++ b/polly/lib/Analysis/ScopPass.cpp @@ -79,11 +79,11 @@ bool ScopAnalysisManagerFunctionProxy::Result::invalidate( // First, check whether our ScopInfo is about to be invalidated auto PAC = PA.getChecker<ScopAnalysisManagerFunctionProxy>(); - if (!(PAC.preserved() || PAC.preservedSet<AllAnalysesOn<Function>>() || - Inv.invalidate<ScopInfoAnalysis>(F, PA) || - Inv.invalidate<ScalarEvolutionAnalysis>(F, PA) || - Inv.invalidate<LoopAnalysis>(F, PA) || - Inv.invalidate<DominatorTreeAnalysis>(F, PA))) { + if (!(PAC.preserved() || PAC.preservedSet<AllAnalysesOn<Function>>()) || + Inv.invalidate<ScopInfoAnalysis>(F, PA) || + Inv.invalidate<ScalarEvolutionAnalysis>(F, PA) || + Inv.invalidate<LoopAnalysis>(F, PA) || + Inv.invalidate<DominatorTreeAnalysis>(F, PA)) { // As everything depends on ScopInfo, we must drop all existing results for (auto &S : *SI) |

