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:944
Templates
- DerivedT
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)
- 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)
Methods
¶AAResultBase<T>()
AAResultBase<T>()
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1012
¶AAResultBase<T>(const AAResultBase<T>& Arg)
AAResultBase<T>(const AAResultBase<T>& Arg)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1016
Parameters
- const AAResultBase<T>& Arg
¶AAResultBase<T>(AAResultBase<T>&& Arg)
AAResultBase<T>(AAResultBase<T>&& Arg)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1017
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:1032
Parameters
- const llvm::MemoryLocation& LocA
- const llvm::MemoryLocation& LocB
- llvm::AAQueryInfo& AAQI
¶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:1042
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:1029
¶llvm::FunctionModRefBehavior getModRefBehavior(
const llvm::CallBase* Call)
llvm::FunctionModRefBehavior getModRefBehavior(
const llvm::CallBase* Call)
Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:1046
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:1050
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:1054
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:1059
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:1037
Parameters
- const llvm::MemoryLocation& Loc
- llvm::AAQueryInfo& AAQI
- bool OrLocal