class AAResultBase
Declaration
template <typename DerivedT>
class AAResultBase { /* full declaration omitted */ };
Description
A CRTP-driven "mixin" base class to help implement the function alias analysis results concept. Because of the nature of many alias analysis implementations, they often only implement a subset of the interface. This base class will attempt to implement the remaining portions of the interface in terms of simpler forms of the interface where possible, and otherwise provide conservatively correct fallback implementations. Implementors of an alias analysis should derive from this CRTP, and then override specific methods that they wish to customize. There is no need to use virtual anywhere, the CRTP base class does static dispatch to the derived type passed into it.
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1134
Templates
- DerivedT
Member Variables
- private llvm::AAResults* AAR = nullptr
- A pointer to the AAResults object that this AAResult is aggregated within. May be null if not aggregated.
Method Overview
- protected AAResultBase<T>()
- protected AAResultBase<T>(const AAResultBase<T> & Arg)
- protected AAResultBase<T>(AAResultBase<T> && Arg)
- public llvm::AliasResult alias(const llvm::MemoryLocation & LocA, const llvm::MemoryLocation & LocB, llvm::AAQueryInfo & AAQI)
- private DerivedT & derived()
- public llvm::ModRefInfo getArgModRefInfo(const llvm::CallBase * Call, unsigned int ArgIdx)
- protected llvm::AAResultBase::AAResultsProxy getBestAAResults()
- public llvm::FunctionModRefBehavior getModRefBehavior(const llvm::CallBase * Call)
- public llvm::FunctionModRefBehavior getModRefBehavior(const llvm::Function * F)
- public llvm::ModRefInfo getModRefInfo(const llvm::CallBase * Call, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
- public llvm::ModRefInfo getModRefInfo(const llvm::CallBase * Call1, const llvm::CallBase * Call2, llvm::AAQueryInfo & AAQI)
- public bool pointsToConstantMemory(const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI, bool OrLocal)
- private void setAAResults(llvm::AAResults * NewAAR)
Methods
¶AAResultBase<T>()
AAResultBase<T>()
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1202
¶AAResultBase<T>(const AAResultBase<T>& Arg)
AAResultBase<T>(const AAResultBase<T>& Arg)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1206
Parameters
- const AAResultBase<T>& Arg
¶AAResultBase<T>(AAResultBase<T>&& Arg)
AAResultBase<T>(AAResultBase<T>&& Arg)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1207
Parameters
- AAResultBase<T>&& Arg
¶llvm::AliasResult alias(
const llvm::MemoryLocation& LocA,
const llvm::MemoryLocation& LocB,
llvm::AAQueryInfo& AAQI)
llvm::AliasResult alias(
const llvm::MemoryLocation& LocA,
const llvm::MemoryLocation& LocB,
llvm::AAQueryInfo& AAQI)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1222
Parameters
- const llvm::MemoryLocation& LocA
- const llvm::MemoryLocation& LocB
- llvm::AAQueryInfo& AAQI
¶DerivedT& derived()
DerivedT& derived()
Description
Helper to dispatch calls back through the derived type.
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1145
¶llvm::ModRefInfo getArgModRefInfo(
const llvm::CallBase* Call,
unsigned int ArgIdx)
llvm::ModRefInfo getArgModRefInfo(
const llvm::CallBase* Call,
unsigned int ArgIdx)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1232
Parameters
- const llvm::CallBase* Call
- unsigned int ArgIdx
¶llvm::AAResultBase::AAResultsProxy
getBestAAResults()
llvm::AAResultBase::AAResultsProxy
getBestAAResults()
Description
Get a proxy for the best AA result set to query at this time. When this result is part of a larger aggregation, this will proxy to that aggregation. When this result is used in isolation, it will just delegate back to the derived class's implementation. Note that callers of this need to take considerable care to not cause performance problems when they use this routine, in the case of a large number of alias analyses being aggregated, it can be expensive to walk back across the chain.
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1219
¶llvm::FunctionModRefBehavior getModRefBehavior(
const llvm::CallBase* Call)
llvm::FunctionModRefBehavior getModRefBehavior(
const llvm::CallBase* Call)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1236
Parameters
- const llvm::CallBase* Call
¶llvm::FunctionModRefBehavior getModRefBehavior(
const llvm::Function* F)
llvm::FunctionModRefBehavior getModRefBehavior(
const llvm::Function* F)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1240
Parameters
- const llvm::Function* F
¶llvm::ModRefInfo getModRefInfo(
const llvm::CallBase* Call,
const llvm::MemoryLocation& Loc,
llvm::AAQueryInfo& AAQI)
llvm::ModRefInfo getModRefInfo(
const llvm::CallBase* Call,
const llvm::MemoryLocation& Loc,
llvm::AAQueryInfo& AAQI)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1244
Parameters
- const llvm::CallBase* Call
- const llvm::MemoryLocation& Loc
- llvm::AAQueryInfo& AAQI
¶llvm::ModRefInfo getModRefInfo(
const llvm::CallBase* Call1,
const llvm::CallBase* Call2,
llvm::AAQueryInfo& AAQI)
llvm::ModRefInfo getModRefInfo(
const llvm::CallBase* Call1,
const llvm::CallBase* Call2,
llvm::AAQueryInfo& AAQI)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1249
Parameters
- const llvm::CallBase* Call1
- const llvm::CallBase* Call2
- llvm::AAQueryInfo& AAQI
¶bool pointsToConstantMemory(
const llvm::MemoryLocation& Loc,
llvm::AAQueryInfo& AAQI,
bool OrLocal)
bool pointsToConstantMemory(
const llvm::MemoryLocation& Loc,
llvm::AAQueryInfo& AAQI,
bool OrLocal)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1227
Parameters
- const llvm::MemoryLocation& Loc
- llvm::AAQueryInfo& AAQI
- bool OrLocal
¶void setAAResults(llvm::AAResults* NewAAR)
void setAAResults(llvm::AAResults* NewAAR)
Description
A setter for the AAResults pointer, which is used to satisfy the AAResults::Model contract.
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1149
Parameters
- llvm::AAResults* NewAAR