aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/SourceManager.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2013-11-22 23:38:07 +0000
committerChandler Carruth <chandlerc@gmail.com>2013-11-22 23:38:07 +0000
commitbceeb22905627a53c9fdcb7f3096154e6dc40f2b (patch)
tree517116c557f21a04205e29f7627a31b541838120 /clang/lib/Basic/SourceManager.cpp
parentbfb9bb2437def028d200303dafe8671dbe672dd1 (diff)
downloadllvm-bceeb22905627a53c9fdcb7f3096154e6dc40f2b.zip
llvm-bceeb22905627a53c9fdcb7f3096154e6dc40f2b.tar.gz
llvm-bceeb22905627a53c9fdcb7f3096154e6dc40f2b.tar.bz2
[PM] Switch the downward invalidation to be incremental where only the
one function's analyses are invalidated at a time. Also switch the preservation of the proxy to *fully* preserve the lower (function) analyses. Combined, this gets both upward and downward analysis invalidation to a point I'm happy with: - A function pass invalidates its function analyses, and its parent's module analyses. - A module pass invalidates all of its functions' analyses including the set of which functions are in the module. - A function pass can preserve a module analysis pass. - If all function passes preserve a module analysis pass, that preservation persists. If any doesn't the module analysis is invalidated. - A module pass can opt into managing *all* function analysis invalidation itself or *none*. - The conservative default is none, and the proxy takes the maximally conservative approach that works even if the set of functions has changed. - If a module pass opts into managing function analysis invalidation it has to propagate the invalidation itself, the proxy just does nothing. The only thing really missing is a way to query for a cached analysis or nothing at all. With this, function passes can more safely request a cached module analysis pass without fear of it accidentally running part way through. llvm-svn: 195519
Diffstat (limited to 'clang/lib/Basic/SourceManager.cpp')
0 files changed, 0 insertions, 0 deletions