24 "LibCall Alias Analysis",
false,
true,
false)
55 if (MRInfo ==
NoModRef)
return MRInfo;
61 if (Details ==
nullptr)
70 for (
unsigned i = 0; Details[i].
LocationID != ~0U; ++i) {
90 bool NoneMatch =
true;
91 for (
unsigned i = 0; Details[i].
LocationID != ~0U; ++i) {
133 MRInfo =
ModRefResult(MRInfo & AnalyzeLibCallDetails(FI, CS, Loc));
const LibCallFunctionInfo * getFunctionInfo(const Function *F) const
getFunctionInfo - Return the LibCallFunctionInfo object corresponding to the specified function if we...
const LocationMRInfo * LocationDetails
LocationDetails - This is a pointer to an array of LocationMRInfo structs which indicates the behavio...
DoesNot - If DetailsType is set to DoesNot, then the sense of the LocationDetails array is completely...
DoesOnly - If DetailsType is set to DoesOnly, then we know that the only mod/ref behavior of this fun...
LibCallInfo - Abstract interface to query about library call information.
INITIALIZE_AG_PASS(LibCallAliasAnalysis, AliasAnalysis,"libcall-aa","LibCall Alias Analysis", false, true, false) FunctionPass *llvm
FunctionPass * createLibCallAliasAnalysisPass(LibCallInfo *LCI)
createLibCallAliasAnalysisPass - Create an alias analysis pass that knows about the semantics of a se...
unsigned LocationID
LocationID - ID # of the accessed location or ~0U for array end.
LibCallFunctionInfo - Each record in the array of FunctionInfo structs records the behavior of one li...
LocResult
isLocation - Return a LocResult if the specified pointer refers to this location for the specified ca...
enum llvm::LibCallFunctionInfo::@26 DetailsType
DetailsType - Indicate the sense of the LocationDetails array.
FunTy * getCalledFunction() const
getCalledFunction - Return the function being called if this is a direct call, otherwise return null ...
Represent the analysis usage information of a pass.
AliasAnalysis::ModRefResult UniversalBehavior
TODO: Constant folding function: Constant* vector -> Constant*.
FunctionPass class - This class is used to implement most global optimizations.
Representation for a specific memory location.
bool runOnFunction(Function &F) override
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass...
ModRefResult getModRefInfo(const Instruction *I)
getModRefInfo - Return information about whether or not an instruction may read or write memory (with...
void InitializeAliasAnalysis(Pass *P, const DataLayout *DL)
InitializeAliasAnalysis - Subclasses must call this method to initialize the AliasAnalysis interface ...
ModRefResult getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc) override
getModRefInfo (for call sites) - Return information about whether a particular call site modifies or ...
void setPreservesAll()
Set by analyses that do not transform their input at all.
const DataLayout & getDataLayout() const
Get the data layout for the module's target platform.
LocResult(* isLocation)(ImmutableCallSite CS, const MemoryLocation &Loc)
ImmutableCallSite - establish a view to a call site for examination.
Module * getParent()
Get the module that this global value is contained inside of...
ModRefResult
Simple mod/ref information...
virtual void getAnalysisUsage(AnalysisUsage &AU) const
getAnalysisUsage - All alias analysis implementations should invoke this directly (using AliasAnalysi...
const LibCallLocationInfo & getLocationInfo(unsigned LocID) const
getLocationInfo - Return information about the specified LocationID.
LocationMRInfo - This pair captures info about whether a specific location is modified or referenced ...
LibCallAliasAnalysis - Alias analysis driven from LibCallInfo.
~LibCallAliasAnalysis() override
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - All alias analysis implementations should invoke this directly (using AliasAnalysi...
LibCallLocationInfo - This struct describes a set of memory locations that are accessed by libcalls...