LLVM: lib/Analysis/BasicAliasAnalysis.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
STATISTIC (SearchLimitReached, "Number of times the limit to " "decompose GEPs is reached")
SearchLimitReached / SearchTimes shows how often the limit of to decompose GEPs is reached.
STATISTIC (SearchTimes, "Number of times a GEP is decomposed")
static std::optional< TypeSize > getObjectSize (const Value *V, const DataLayout &DL, const TargetLibraryInfo &TLI, bool NullIsValidLoc, bool RoundToAlign=false)
Returns the size of the object specified by V or UnknownSize if unknown.
static bool isObjectSmallerThan (const Value *V, TypeSize Size, const DataLayout &DL, const TargetLibraryInfo &TLI, bool NullIsValidLoc)
Returns true if we can prove that the object specified by V is smaller than Size.
static TypeSize getMinimalExtentFrom (const Value &V, const LocationSize &LocSize, const DataLayout &DL, bool NullIsValidLoc)
Return the minimal extent from V to the end of the underlying object, assuming the result is used in an aliasing query.
static bool isObjectSize (const Value *V, TypeSize Size, const DataLayout &DL, const TargetLibraryInfo &TLI, bool NullIsValidLoc)
Returns true if we can prove that the object specified by V has size Size.
static bool areBothVScale (const Value *V1, const Value *V2)
Return true if both V1 and V2 are VScale.
static bool isNotInCycle (const Instruction *I, const DominatorTree *DT, const LoopInfo *LI)
static LinearExpression GetLinearExpression (const CastedValue &Val, const DataLayout &DL, unsigned Depth, AssumptionCache *AC, DominatorTree *DT)
Analyzes the specified value as a linear expression: "A*V + B", where A and B are constant integers.
static bool isIntrinsicCall (const CallBase *Call, Intrinsic::ID IID)
static const Function * getParent (const Value *V)
static bool notDifferentParent (const Value *O1, const Value *O2)
static AliasResult MergeAliasResults (AliasResult A, AliasResult B)
INITIALIZE_PASS_BEGIN (BasicAAWrapperPass, "basic-aa", "Basic Alias Analysis (stateless AA impl)", true, true) INITIALIZE_PASS_END(BasicAAWrapperPass
basic Basic Alias Analysis (stateless AA impl)"
Variables
static cl::opt< bool > EnableRecPhiAnalysis ("basic-aa-recphi", cl::Hidden, cl::init(true))
Enable analysis of recursive PHI nodes.
static cl::opt< bool > EnableSeparateStorageAnalysis ("basic-aa-separate-storage", cl::Hidden, cl::init(true))
static const unsigned MaxLookupSearchDepth = 6
basic aa
basic Basic Alias true

DEBUG_TYPE

#define DEBUG_TYPE "basicaa"

basic Basic Alias Analysis ( stateless AA impl )

areBothVScale()

GetLinearExpression()

getMinimalExtentFrom()

getObjectSize()

getParent()

Definition at line 863 of file BasicAliasAnalysis.cpp.

References llvm::GlobalValue::getParent().

Referenced by llvm::CanonicalLoopInfo::assertOK(), llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), llvm::CloneAndPruneIntoFromInst(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), detectPopcountIdiom(), ensureValueAvailableInSuccessor(), llvm::VPBasicBlock::execute(), llvm::CodeExtractor::findAllocas(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldURemOfLoopIncrement(), llvm::RegionBase< Tr >::getDepth(), llvm::VPBasicBlock::getEnclosingLoopRegion(), llvm::getLiveRegMap(), getLocalFunctionMetadata(), llvm::LoopBase< BasicBlock, Loop >::getLoopLatch(), llvm::slpvectorizer::BoUpSLP::getReorderingData(), isBlockValidForExtraction(), llvm::PHINode::isComplete(), llvm::VPBasicBlock::isExiting(), isFSqrtDivToFMulLegal(), llvm::CodeExtractor::isLegalToShrinkwrapLifetimeMarkers(), isOnlyUsedInEntryBlock(), isUsedOutsideOfDefiningBlock(), LLVMGetBasicBlockParent(), LLVMGetGlobalParent(), LLVMGetInstructionParent(), LLVMGetParamParent(), notDifferentParent(), preparePlanForEpilogueVectorLoop(), llvm::MachineFunction::print(), redirectValuesFromPredecessorsToPhi(), llvm::AssumptionCache::registerAssumption(), llvm::ScheduleDAGMI::schedule(), llvm::ScheduleDAGMILive::schedule(), llvm::VLIWMachineScheduler::schedule(), llvm::SIScheduleDAGMI::schedule(), splitCallSite(), and llvm::GenericCycle< ContextT >::verifyCycle().

INITIALIZE_PASS_BEGIN()

isIntrinsicCall()

isNotInCycle()

isObjectSize()

isObjectSmallerThan()

MergeAliasResults()

notDifferentParent()

STATISTIC() [1/2]

STATISTIC ( SearchLimitReached ,
"Number of times the limit to " "decompose GEPs is reached"
)

SearchLimitReached / SearchTimes shows how often the limit of to decompose GEPs is reached.

It will affect the precision of basic alias analysis.

STATISTIC() [2/2]

STATISTIC ( SearchTimes ,
"Number of times a GEP is decomposed"
)

aa

EnableRecPhiAnalysis

cl::opt< bool > EnableRecPhiAnalysis("basic-aa-recphi", cl::Hidden, cl::init(true)) ( "basic-aa-recphi" , cl::Hidden , cl::init(true) ) static

Enable analysis of recursive PHI nodes.

EnableSeparateStorageAnalysis

cl::opt< bool > EnableSeparateStorageAnalysis("basic-aa-separate-storage", cl::Hidden, cl::init(true)) ( "basic-aa-separate-storage" , cl::Hidden , cl::init(true) ) static

MaxLookupSearchDepth

true