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

Go to the source code of this file.

Macros
#define DEBUG_TYPE "basicaa"
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)
static bool isArgumentOrArgumentLike (const Value *V)
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))
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 885 of file BasicAliasAnalysis.cpp.

References llvm::dyn_cast(), and llvm::GlobalValue::getParent().

Referenced by llvm::CombinerHelper::applyRepeatedFPDivisor(), slpvectorizer::BoUpSLP::canVectorizeLoads(), llvm::CFIInstBuilder::CFIInstBuilder(), llvm::CloneAndPruneIntoFromInst(), llvm::LoopVectorizationCostModel::collectValuesToIgnore(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::DataDependenceGraph::DataDependenceGraph(), detectPopcountIdiom(), llvm::DiagnosticInfoMIROptimization::DiagnosticInfoMIROptimization(), llvm::DiagnosticInfoMisExpect::DiagnosticInfoMisExpect(), llvm::DiagnosticInfoOptimizationFailure::DiagnosticInfoOptimizationFailure(), ensureValueAvailableInSuccessor(), foldURemOfLoopIncrement(), llvm::FunctionPropertiesUpdater::FunctionPropertiesUpdater(), llvm::RegionBase< Tr >::getDepth(), getLocalFunctionMetadata(), llvm::LoopBase< BasicBlock, Loop >::getLoopLatch(), llvm::TargetLoweringObjectFileGOFF::getModuleMetadata(), llvm::LazyValueInfo::getPredicateAt(), slpvectorizer::BoUpSLP::getReorderingData(), llvm::MCSectionGOFF::getTextStyle(), llvm::InlineAdvice::InlineAdvice(), ARMInstructionSelector::InsertInfo::InsertInfo(), llvm::InstrEmitter::InstrEmitter(), isBlockValidForExtraction(), llvm::PHINode::isComplete(), isOnlyUsedInEntryBlock(), isUsedOutsideOfDefiningBlock(), LLVMGetBasicBlockParent(), LLVMGetGlobalParent(), LLVMGetInstructionParent(), LLVMGetParamParent(), llvm::LoopConstrainer::LoopConstrainer(), llvm::MachineIRBuilder::MachineIRBuilder(), llvm::MachineModuleSlotTracker::MachineModuleSlotTracker(), llvm::MachineOptimizationRemarkAnalysis::MachineOptimizationRemarkAnalysis(), llvm::VPlanTransforms::materializeBroadcasts(), llvm::MIBundleBuilder::MIBundleBuilder(), notDifferentParent(), llvm::OptimizationRemark::OptimizationRemark(), llvm::OptimizationRemark::OptimizationRemark(), llvm::OptimizationRemarkAnalysis::OptimizationRemarkAnalysis(), llvm::OptimizationRemarkAnalysis::OptimizationRemarkAnalysis(), llvm::OptimizationRemarkAnalysis::OptimizationRemarkAnalysis(), llvm::OptimizationRemarkMissed::OptimizationRemarkMissed(), llvm::OptimizationRemarkMissed::OptimizationRemarkMissed(), llvm::BasicBlock::print(), llvm::DbgMarker::print(), llvm::Function::print(), llvm::MachineFunction::print(), llvm::NamedMDNode::print(), llvm::NamedMDNode::print(), llvm::PrologEpilogSGPRSpillBuilder::PrologEpilogSGPRSpillBuilder(), redirectValuesFromPredecessorsToPhi(), llvm::AssumptionCache::registerAssumption(), llvm::VerifyInstrumentation::registerCallbacks(), RemarkInfo::RemarkInfo(), llvm::LoopRotatePass::run(), llvm::ScheduleDAGMI::schedule(), llvm::ScheduleDAGMILive::schedule(), llvm::SIScheduleDAGMI::schedule(), llvm::VLIWMachineScheduler::schedule(), llvm::SGPRSpillBuilder::SGPRSpillBuilder(), llvm::SlotTracker::SlotTracker(), splitCallSite(), llvm::GenericCycle< ContextT >::verifyCycle(), and slpvectorizer::BoUpSLP::VLOperands::VLOperands().

INITIALIZE_PASS_BEGIN()

isArgumentOrArgumentLike()

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

true