diff options
author | Devin Coughlin <dcoughlin@apple.com> | 2015-10-01 20:09:11 +0000 |
---|---|---|
committer | Devin Coughlin <dcoughlin@apple.com> | 2015-10-01 20:09:11 +0000 |
commit | 195b3b0074873946dfcd5514aaa8a996a7d0138e (patch) | |
tree | a46fceebc18ff096769d94ef5b9da3f5f594a194 /llvm/lib/CodeGen/FuncletLayout.cpp | |
parent | ff1dcc59d99a9341cff7295c407dad93101a9b3c (diff) | |
download | llvm-195b3b0074873946dfcd5514aaa8a996a7d0138e.zip llvm-195b3b0074873946dfcd5514aaa8a996a7d0138e.tar.gz llvm-195b3b0074873946dfcd5514aaa8a996a7d0138e.tar.bz2 |
[analyzer] Add TK_EntireMemSpace invalidation trait.
This commit supports Sean Eveson's work on loop widening. It is NFC for now.
It adds a new TK_EntireMemSpace invalidation trait that, when applied to a
MemSpaceRegion, indicates that the entire memory space should be invalidated.
Clients can add this trait before invalidating. For example:
RegionAndSymbolInvalidationTraits ITraits;
ITraits.setTrait(MRMgr.getStackLocalsRegion(STC),
RegionAndSymbolInvalidationTraits::TK_EntireMemSpace);
This commit updates the existing logic invalidating global memspace regions for
calls to additionally handle arbitrary memspaces. When generating initial
clusters during cluster analysis we now add a cluster to the worklist if
the memspace for its base is marked with TK_EntireMemSpace.
This also moves the logic for invalidating globals from ClusterAnalysis to
invalidateRegionsWorker so that it is not shared with removeDeadBindingsWorker.
There are no explicit tests with this patch -- but when applied to Sean's patch
for loop widening in http://reviews.llvm.org/D12358 and after updating his code
to set the trait, the failing tests in that patch now pass.
Differential Revision: http://reviews.llvm.org/D12993
llvm-svn: 249063
Diffstat (limited to 'llvm/lib/CodeGen/FuncletLayout.cpp')
0 files changed, 0 insertions, 0 deletions