LLVM 20.0.0git
|
This class stores info we want to provide to or retain within an alias query. More...
#include "llvm/Analysis/AliasAnalysis.h"
Classes | |
struct | CacheEntry |
Public Types | |
using | LocPair = std::pair< AACacheLoc, AACacheLoc > |
using | AliasCacheT = SmallDenseMap< LocPair, CacheEntry, 8 > |
Public Member Functions | |
AAQueryInfo (AAResults &AAR, CaptureInfo *CI) | |
Public Attributes | |
AAResults & | AAR |
AliasCacheT | AliasCache |
CaptureInfo * | CI |
unsigned | Depth = 0 |
Query depth used to distinguish recursive queries. | |
int | NumAssumptionUses = 0 |
How many active NoAlias assumption uses there are. | |
SmallVector< AAQueryInfo::LocPair, 4 > | AssumptionBasedResults |
Location pairs for which an assumption based result is currently stored. | |
bool | MayBeCrossIteration = false |
Tracks whether the accesses may be on different cycle iterations. | |
bool | UseDominatorTree = true |
Whether alias analysis is allowed to use the dominator tree, for use by passes that lazily update the DT while performing AA queries. | |
This class stores info we want to provide to or retain within an alias query.
By default, the root query is stateless and starts with a freshly constructed info object. Specific alias analyses can use this query info to store per-query state that is important for recursive or nested queries to avoid recomputing. To enable preserving this state across multiple queries where safe (due to the IR not changing), use a BatchAAResults
wrapper. The information stored in an AAQueryInfo
is currently limitted to the caches used by BasicAA, but can further be extended to fit other AA needs.
Definition at line 238 of file AliasAnalysis.h.
using llvm::AAQueryInfo::AliasCacheT = SmallDenseMap<LocPair, CacheEntry, 8> |
Definition at line 265 of file AliasAnalysis.h.
using llvm::AAQueryInfo::LocPair = std::pair<AACacheLoc, AACacheLoc> |
Definition at line 240 of file AliasAnalysis.h.
|
inline |
Definition at line 301 of file AliasAnalysis.h.
AAResults& llvm::AAQueryInfo::AAR |
Definition at line 263 of file AliasAnalysis.h.
Referenced by llvm::BasicAAResult::getMemoryEffects(), and llvm::BasicAAResult::getModRefInfo().
AliasCacheT llvm::AAQueryInfo::AliasCache |
Definition at line 266 of file AliasAnalysis.h.
SmallVector<AAQueryInfo::LocPair, 4> llvm::AAQueryInfo::AssumptionBasedResults |
Location pairs for which an assumption based result is currently stored.
Used to remove all potentially incorrect results from the cache if an assumption is disproven.
Definition at line 279 of file AliasAnalysis.h.
CaptureInfo* llvm::AAQueryInfo::CI |
Definition at line 268 of file AliasAnalysis.h.
Referenced by llvm::BasicAAResult::getModRefInfo().
unsigned llvm::AAQueryInfo::Depth = 0 |
Query depth used to distinguish recursive queries.
Definition at line 271 of file AliasAnalysis.h.
Referenced by llvm::AAResults::alias().
bool llvm::AAQueryInfo::MayBeCrossIteration = false |
Tracks whether the accesses may be on different cycle iterations.
When interpret "Value" pointer equality as value equality we need to make sure that the "Value" is not part of a cycle. Otherwise, two uses could come from different "iterations" of a cycle and see different values for the same "Value" pointer.
The following example shows the problem: p = phi(alloca1, addr2) l = load ptr addr1 = gep, alloca2, 0, l addr2 = gep alloca2, 0, (l + 1) alias(p, addr1) -> MayAlias ! store l, ...
Definition at line 295 of file AliasAnalysis.h.
Referenced by llvm::BatchAAResults::enableCrossIterationMode().
int llvm::AAQueryInfo::NumAssumptionUses = 0 |
How many active NoAlias assumption uses there are.
Definition at line 274 of file AliasAnalysis.h.
Whether alias analysis is allowed to use the dominator tree, for use by passes that lazily update the DT while performing AA queries.
Definition at line 299 of file AliasAnalysis.h.
Referenced by llvm::BatchAAResults::disableDominatorTree().