[Polly][PM] Improve invalidation in the Scop-Pipeline
authorPhilip Pfaffe <philip.pfaffe@gmail.com>
Thu, 10 Aug 2017 07:43:46 +0000 (07:43 +0000)
committerPhilip Pfaffe <philip.pfaffe@gmail.com>
Thu, 10 Aug 2017 07:43:46 +0000 (07:43 +0000)
commitf43e7c2e9733448624fe05cd186cc440daf83e4b
tree0ca16341a3ac523ebd41204e480fa8318cea4f1e
parent2f4e2e2758abc28ebc2215c293f5f77b7711ed89
[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
polly/include/polly/ScopInfo.h
polly/include/polly/ScopPass.h
polly/lib/Analysis/ScopInfo.cpp
polly/lib/Analysis/ScopPass.cpp
polly/lib/CodeGen/CodeGeneration.cpp