LLVM: llvm::BasicAAResult Class Reference (original) (raw)

This is the AA result object for the basic, local, and stateless alias analysis. More...

#include "[llvm/Analysis/BasicAliasAnalysis.h](BasicAliasAnalysis%5F8h%5Fsource.html)"

Public Member Functions
BasicAAResult (const DataLayout &DL, const Function &F, const TargetLibraryInfo &TLI, AssumptionCache &AC, DominatorTree *DT=nullptr)
BasicAAResult (const BasicAAResult &Arg)
BasicAAResult (BasicAAResult &&Arg)
LLVM_ABI bool invalidate (Function &Fn, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &Inv)
Handle invalidation events in the new pass manager.
LLVM_ABI AliasResult alias (const MemoryLocation &LocA, const MemoryLocation &LocB, AAQueryInfo &AAQI, const Instruction *CtxI)
LLVM_ABI AliasResult aliasErrno (const MemoryLocation &Loc, const Module *M)
LLVM_ABI ModRefInfo getModRefInfo (const CallBase *Call, const MemoryLocation &Loc, AAQueryInfo &AAQI)
Checks to see if the specified callsite can clobber the specified memory object.
LLVM_ABI ModRefInfo getModRefInfo (const CallBase *Call1, const CallBase *Call2, AAQueryInfo &AAQI)
LLVM_ABI ModRefInfo getModRefInfoMask (const MemoryLocation &Loc, AAQueryInfo &AAQI, bool IgnoreLocals=false)
Returns a bitmask that should be unconditionally applied to the ModRef info of a memory location.
LLVM_ABI ModRefInfo getArgModRefInfo (const CallBase *Call, unsigned ArgIdx)
Get the location associated with a pointer argument of a callsite.
LLVM_ABI MemoryEffects getMemoryEffects (const CallBase *Call, AAQueryInfo &AAQI)
Returns the behavior when calling the given call site.
LLVM_ABI MemoryEffects getMemoryEffects (const Function *Fn)
Returns the behavior when calling the given function.
Public Member Functions inherited from llvm::AAResultBase
AliasResult alias (const MemoryLocation &LocA, const MemoryLocation &LocB, AAQueryInfo &AAQI, const Instruction *I)
AliasResult aliasErrno (const MemoryLocation &Loc, const Module *M)
ModRefInfo getModRefInfoMask (const MemoryLocation &Loc, AAQueryInfo &AAQI, bool IgnoreLocals)
ModRefInfo getArgModRefInfo (const CallBase *Call, unsigned ArgIdx)
MemoryEffects getMemoryEffects (const CallBase *Call, AAQueryInfo &AAQI)
MemoryEffects getMemoryEffects (const Function *F)
ModRefInfo getModRefInfo (const CallBase *Call, const MemoryLocation &Loc, AAQueryInfo &AAQI)
ModRefInfo getModRefInfo (const CallBase *Call1, const CallBase *Call2, AAQueryInfo &AAQI)

This is the AA result object for the basic, local, and stateless alias analysis.

It implements the AA query interface in an entirely stateless manner. As one consequence, it is never invalidated due to IR changes. While it does retain some storage, that is used as an optimization and not to preserve information from query to query. However it does retain handles to various other analyses and must be recomputed when those analyses are.

Definition at line 42 of file BasicAliasAnalysis.h.

BasicAAResult() [2/3]

BasicAAResult() [3/3]

llvm::BasicAAResult::BasicAAResult ( BasicAAResult && Arg) inline

alias()

aliasErrno()

getArgModRefInfo()

getMemoryEffects() [1/2]

getMemoryEffects() [2/2]

getModRefInfo() [1/2]

Checks to see if the specified callsite can clobber the specified memory object.

Since we only look at local properties of this function, we really can't say much about this query. We do, however, use simple "address taken" analysis on local objects.

Definition at line 921 of file BasicAliasAnalysis.cpp.

References llvm::AAQueryInfo::AAR, llvm::AAResults::alias(), llvm::AAResults::aliasErrno(), llvm::ArgMem, assert(), llvm::AAQueryInfo::CA, Call, llvm::capturesNothing(), llvm::capturesReadProvenanceOnly(), llvm::dyn_cast(), llvm::ErrnoMem, llvm::AAResults::getArgModRefInfo(), llvm::MemoryLocation::getBeforeOrAfter(), llvm::CaptureAnalysis::getCapturesBefore(), llvm::MemoryLocation::getForArgument(), llvm::AAResults::getMemoryEffects(), llvm::Value::getType(), llvm::getUnderlyingObject(), llvm::MemoryEffectsBase< LocationEnum >::getWithoutLoc(), llvm::InaccessibleMem, llvm::isa(), isIntrinsicCall(), llvm::isMallocOrCallocLikeFn(), llvm::isModAndRefSet(), llvm::isModOrRefSet(), llvm::Type::isPointerTy(), llvm::Mod, llvm::ModRef, llvm::AliasResult::NoAlias, llvm::NoModRef, notDifferentParent(), llvm::Other, and llvm::Ref.

getModRefInfo() [2/2]

getModRefInfoMask()

Returns a bitmask that should be unconditionally applied to the ModRef info of a memory location.

This allows us to eliminate Mod and/or Ref from the ModRef info based on the knowledge that the memory location points to constant and/or locally-invariant memory.

If IgnoreLocals is true, then this method returns NoModRef for memory that points to a local alloca.

Definition at line 756 of file BasicAliasAnalysis.cpp.

References _, llvm::append_range(), assert(), llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::getUnderlyingObject(), llvm::isa(), llvm::make_scope_exit(), llvm::ModRef, llvm::NoModRef, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::Ref.

invalidate()


The documentation for this class was generated from the following files: