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 |
|---|