Go to the documentation of this file.
13 #ifndef LLVM_ANALYSIS_BASICALIASANALYSIS_H
14 #define LLVM_ANALYSIS_BASICALIASANALYSIS_H
26 class AssumptionCache;
34 class TargetLibraryInfo;
58 :
DL(
DL),
F(
F), TLI(TLI), AC(AC), DT(DT), PV(PV) {}
133 bool isValueEqualInPotentialCycles(
const Value *V1,
const Value *
V2);
135 void subtractDecomposedGEPs(DecomposedGEP &DestGEP,
136 const DecomposedGEP &SrcGEP);
140 const Value *UnderlyingV1,
const Value *UnderlyingV2,
174 std::unique_ptr<BasicAAResult> Result;
176 virtual void anchor();
216 #endif // LLVM_ANALYSIS_BASICALIASANALYSIS_H
A set of analyses that are preserved following a run of a transformation pass.
Analysis pass providing a never-invalidated alias analysis result.
This is an optimization pass for GlobalISel generic memory operations.
print lazy value Lazy Value Info Printer Pass
A parsed version of the target data layout string in and methods for querying it.
BasicAAResult run(Function &F, FunctionAnalysisManager &AM)
This currently compiles esp xmm0 movsd esp eax eax esp ret We should use not the dag combiner This is because dagcombine2 needs to be able to see through the X86ISD::Wrapper which DAGCombine can t really do The code for turning x load into a single vector load is target independent and should be moved to the dag combiner The code for turning x load into a vector load can only handle a direct load from a global or a direct load from the stack It should be generalized to handle any load from P
BasicAAResult(const BasicAAResult &Arg)
bool runOnFunction(Function &F) override
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
The possible results of an alias query.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
amdgpu Simplify well known AMD library false FunctionCallee Value * Arg
This class stores info we want to provide to or retain within an alias query.
Represent the analysis usage information of a pass.
API to communicate dependencies between analyses during invalidation.
AAResults createLegacyPMAAResults(Pass &P, Function &F, BasicAAResult &BAR)
A helper for the legacy pass manager to create a AAResults object populated to the best of our abilit...
bool pointsToConstantMemory(const MemoryLocation &Loc, AAQueryInfo &AAQI, bool OrLocal)
Chases pointers until we find a (constant global) or not.
AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB, AAQueryInfo &AAQI)
bool invalidate(Function &Fn, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &Inv)
Handle invalidation events in the new pass manager.
BasicAAResult(BasicAAResult &&Arg)
Legacy wrapper pass to provide the BasicAAResult object.
void emplace(ArgTypes &&... Args)
Create a new object by constructing it in place with the given arguments.
A special type used by analysis passes to provide an address that identifies that particular analysis...
BasicAAResult(const DataLayout &DL, const Function &F, const TargetLibraryInfo &TLI, AssumptionCache &AC, DominatorTree *DT=nullptr, PhiValues *PV=nullptr)
ModRefInfo
Flags indicating whether a memory access modifies or references memory.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
StandardInstrumentations SI(Debug, VerifyEach)
This class represents the LLVM 'select' instruction.
@ BasicBlock
Various leaf nodes.
AAResults & operator()(Function &F)
A CRTP mix-in that provides informational APIs needed for analysis passes.
ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc, AAQueryInfo &AAQI)
Checks to see if the specified callsite can clobber the specified memory object.
A cache of @llvm.assume calls within a function.
const BasicAAResult & getResult() const
ModRefInfo getArgModRefInfo(const CallBase *Call, unsigned ArgIdx)
Get the location associated with a pointer argument of a callsite.
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
FunctionModRefBehavior
Summary of how a function affects memory in the program.
This is the AA result object for the basic, local, and stateless alias analysis.
FunctionPass * createBasicAAWrapperPass()
Provides information about what library functions are available for the current target.
BasicAAResult createLegacyPMBasicAAResult(Pass &P, Function &F)
A helper for the legacy pass manager to create a BasicAAResult object populated to the best of our ab...
Pass interface - Implemented by all 'passes'.
Class for calculating and caching the underlying values of phis in a function.
Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...
A container for analyses that lazily runs them and caches their results.
FunctionPass class - This class is used to implement most global optimizations.
BasicAAResult & getResult()
This class is a functor to be used in legacy module or SCC passes for computing AA results for a func...
LLVM Value Representation.
FunctionModRefBehavior getModRefBehavior(const CallBase *Call)
Returns the behavior when calling the given call site.
A CRTP-driven "mixin" base class to help implement the function alias analysis results concept.
Representation for a specific memory location.