LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
llvm::LibCallAliasAnalysis Struct Reference

LibCallAliasAnalysis - Alias analysis driven from LibCallInfo. More...

#include <LibCallAliasAnalysis.h>

Inheritance diagram for llvm::LibCallAliasAnalysis:
Inheritance graph
[legend]
Collaboration diagram for llvm::LibCallAliasAnalysis:
Collaboration graph
[legend]

Public Member Functions

 LibCallAliasAnalysis (LibCallInfo *LC=0)
 
 LibCallAliasAnalysis (char &ID, LibCallInfo *LC)
 
 ~LibCallAliasAnalysis ()
 
ModRefResult getModRefInfo (ImmutableCallSite CS, const Location &Loc)
 
ModRefResult getModRefInfo (ImmutableCallSite CS1, ImmutableCallSite CS2)
 
virtual void getAnalysisUsage (AnalysisUsage &AU) const
 
virtual bool runOnFunction (Function &F)
 
virtual void * getAdjustedAnalysisPointer (const void *PI)
 
- Public Member Functions inherited from llvm::FunctionPass
 FunctionPass (char &pid)
 
PasscreatePrinterPass (raw_ostream &O, const std::string &Banner) const
 createPrinterPass - Get a function printer pass. More...
 
virtual void assignPassManager (PMStack &PMS, PassManagerType T)
 
virtual PassManagerType getPotentialPassManagerType () const
 Return what kind of Pass Manager can manage this pass. More...
 
- Public Member Functions inherited from llvm::Pass
 Pass (PassKind K, char &pid)
 
virtual ~Pass ()
 
PassKind getPassKind () const
 
virtual const char * getPassName () const
 
AnalysisID getPassID () const
 getPassID - Return the PassID number that corresponds to this pass. More...
 
virtual bool doInitialization (Module &)
 
virtual bool doFinalization (Module &)
 
virtual void print (raw_ostream &O, const Module *M) const
 
void dump () const
 
virtual void preparePassManager (PMStack &)
 Check if available pass managers are suitable for this pass or not. More...
 
void setResolver (AnalysisResolver *AR)
 
AnalysisResolvergetResolver () const
 
virtual void releaseMemory ()
 
virtual ImmutablePassgetAsImmutablePass ()
 
virtual PMDataManagergetAsPMDataManager ()
 
virtual void verifyAnalysis () const
 
virtual void dumpPassStructure (unsigned Offset=0)
 
template<typename AnalysisType >
AnalysisType * getAnalysisIfAvailable () const
 
bool mustPreserveAnalysisID (char &AID) const
 
template<typename AnalysisType >
AnalysisType & getAnalysis () const
 
template<typename AnalysisType >
AnalysisType & getAnalysis (Function &F)
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI) const
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI, Function &F)
 
- Public Member Functions inherited from llvm::AliasAnalysis
 AliasAnalysis ()
 
virtual ~AliasAnalysis ()
 
const DataLayoutgetDataLayout () const
 
const TargetLibraryInfogetTargetLibraryInfo () const
 
uint64_t getTypeStoreSize (Type *Ty)
 
Location getLocation (const LoadInst *LI)
 
Location getLocation (const StoreInst *SI)
 
Location getLocation (const VAArgInst *VI)
 
Location getLocation (const AtomicCmpXchgInst *CXI)
 
Location getLocation (const AtomicRMWInst *RMWI)
 
virtual AliasResult alias (const Location &LocA, const Location &LocB)
 
AliasResult alias (const Value *V1, uint64_t V1Size, const Value *V2, uint64_t V2Size)
 alias - A convenience wrapper. More...
 
AliasResult alias (const Value *V1, const Value *V2)
 alias - A convenience wrapper. More...
 
bool isNoAlias (const Location &LocA, const Location &LocB)
 
bool isNoAlias (const Value *V1, uint64_t V1Size, const Value *V2, uint64_t V2Size)
 isNoAlias - A convenience wrapper. More...
 
bool isNoAlias (const Value *V1, const Value *V2)
 isNoAlias - A convenience wrapper. More...
 
bool isMustAlias (const Location &LocA, const Location &LocB)
 isMustAlias - A convenience wrapper. More...
 
bool isMustAlias (const Value *V1, const Value *V2)
 isMustAlias - A convenience wrapper. More...
 
virtual bool pointsToConstantMemory (const Location &Loc, bool OrLocal=false)
 
bool pointsToConstantMemory (const Value *P, bool OrLocal=false)
 pointsToConstantMemory - A convenient wrapper. More...
 
virtual ModRefBehavior getModRefBehavior (ImmutableCallSite CS)
 getModRefBehavior - Return the behavior when calling the given call site. More...
 
virtual ModRefBehavior getModRefBehavior (const Function *F)
 
bool doesNotAccessMemory (ImmutableCallSite CS)
 
bool doesNotAccessMemory (const Function *F)
 
bool onlyReadsMemory (ImmutableCallSite CS)
 
bool onlyReadsMemory (const Function *F)
 
ModRefResult getModRefInfo (const Instruction *I, const Location &Loc)
 
ModRefResult getModRefInfo (const Instruction *I, const Value *P, uint64_t Size)
 getModRefInfo - A convenience wrapper. More...
 
ModRefResult getModRefInfo (ImmutableCallSite CS, const Value *P, uint64_t Size)
 getModRefInfo (for call sites) - A convenience wrapper. More...
 
ModRefResult getModRefInfo (const CallInst *C, const Location &Loc)
 
ModRefResult getModRefInfo (const CallInst *C, const Value *P, uint64_t Size)
 getModRefInfo (for calls) - A convenience wrapper. More...
 
ModRefResult getModRefInfo (const InvokeInst *I, const Location &Loc)
 
ModRefResult getModRefInfo (const InvokeInst *I, const Value *P, uint64_t Size)
 getModRefInfo (for invokes) - A convenience wrapper. More...
 
ModRefResult getModRefInfo (const LoadInst *L, const Location &Loc)
 
ModRefResult getModRefInfo (const LoadInst *L, const Value *P, uint64_t Size)
 getModRefInfo (for loads) - A convenience wrapper. More...
 
ModRefResult getModRefInfo (const StoreInst *S, const Location &Loc)
 
ModRefResult getModRefInfo (const StoreInst *S, const Value *P, uint64_t Size)
 getModRefInfo (for stores) - A convenience wrapper. More...
 
ModRefResult getModRefInfo (const FenceInst *S, const Location &Loc)
 
ModRefResult getModRefInfo (const FenceInst *S, const Value *P, uint64_t Size)
 getModRefInfo (for fences) - A convenience wrapper. More...
 
ModRefResult getModRefInfo (const AtomicCmpXchgInst *CX, const Location &Loc)
 
ModRefResult getModRefInfo (const AtomicCmpXchgInst *CX, const Value *P, unsigned Size)
 getModRefInfo (for cmpxchges) - A convenience wrapper. More...
 
ModRefResult getModRefInfo (const AtomicRMWInst *RMW, const Location &Loc)
 
ModRefResult getModRefInfo (const AtomicRMWInst *RMW, const Value *P, unsigned Size)
 getModRefInfo (for atomicrmws) - A convenience wrapper. More...
 
ModRefResult getModRefInfo (const VAArgInst *I, const Location &Loc)
 
ModRefResult getModRefInfo (const VAArgInst *I, const Value *P, uint64_t Size)
 getModRefInfo (for va_args) - A convenience wrapper. More...
 
ModRefResult callCapturesBefore (const Instruction *I, const AliasAnalysis::Location &MemLoc, DominatorTree *DT)
 
ModRefResult callCapturesBefore (const Instruction *I, const Value *P, uint64_t Size, DominatorTree *DT)
 callCapturesBefore - A convenience wrapper. More...
 
bool canBasicBlockModify (const BasicBlock &BB, const Location &Loc)
 
bool canBasicBlockModify (const BasicBlock &BB, const Value *P, uint64_t Size)
 canBasicBlockModify - A convenience wrapper. More...
 
bool canInstructionRangeModify (const Instruction &I1, const Instruction &I2, const Location &Loc)
 
bool canInstructionRangeModify (const Instruction &I1, const Instruction &I2, const Value *Ptr, uint64_t Size)
 canInstructionRangeModify - A convenience wrapper. More...
 
virtual void deleteValue (Value *V)
 
virtual void copyValue (Value *From, Value *To)
 
virtual void addEscapingUse (Use &U)
 
void replaceWithNewValue (Value *Old, Value *New)
 

Public Attributes

LibCallInfoLCI
 

Static Public Attributes

static char ID = 0
 
- Static Public Attributes inherited from llvm::AliasAnalysis
static char ID = 0
 
static uint64_t const UnknownSize = ~UINT64_C(0)
 

Additional Inherited Members

- Public Types inherited from llvm::AliasAnalysis
enum  AliasResult { NoAlias = 0, MayAlias, PartialAlias, MustAlias }
 
enum  ModRefResult { NoModRef = 0, Ref = 1, Mod = 2, ModRef = 3 }
 
enum  { Nowhere = 0, ArgumentPointees = 4, Anywhere = 8 | ArgumentPointees }
 
enum  ModRefBehavior {
  DoesNotAccessMemory = Nowhere | NoModRef, OnlyReadsArgumentPointees = ArgumentPointees | Ref, OnlyAccessesArgumentPointees = ArgumentPointees | ModRef, OnlyReadsMemory = Anywhere | Ref,
  UnknownModRefBehavior = Anywhere | ModRef
}
 
- Static Public Member Functions inherited from llvm::Pass
static const PassInfolookupPassInfo (const void *TI)
 
static const PassInfolookupPassInfo (StringRef Arg)
 
static PasscreatePass (AnalysisID ID)
 
- Static Public Member Functions inherited from llvm::AliasAnalysis
static Location getLocationForSource (const MemTransferInst *MTI)
 
static Location getLocationForDest (const MemIntrinsic *MI)
 
static bool onlyReadsMemory (ModRefBehavior MRB)
 
static bool onlyAccessesArgPointees (ModRefBehavior MRB)
 
static bool doesAccessArgPointees (ModRefBehavior MRB)
 
- Protected Member Functions inherited from llvm::AliasAnalysis
void InitializeAliasAnalysis (Pass *P)
 
- Protected Attributes inherited from llvm::AliasAnalysis
const DataLayoutTD
 
const TargetLibraryInfoTLI
 

Detailed Description

LibCallAliasAnalysis - Alias analysis driven from LibCallInfo.

Definition at line 25 of file LibCallAliasAnalysis.h.

Constructor & Destructor Documentation

llvm::LibCallAliasAnalysis::LibCallAliasAnalysis ( LibCallInfo LC = 0)
inlineexplicit
llvm::LibCallAliasAnalysis::LibCallAliasAnalysis ( char &  ID,
LibCallInfo LC 
)
inlineexplicit
LibCallAliasAnalysis::~LibCallAliasAnalysis ( )

Definition at line 30 of file LibCallAliasAnalysis.cpp.

References LCI.

Member Function Documentation

virtual void* llvm::LibCallAliasAnalysis::getAdjustedAnalysisPointer ( const void *  PI)
inlinevirtual

getAdjustedAnalysisPointer - This method is used when a pass implements an analysis interface through multiple inheritance. If needed, it should override this to adjust the this pointer as needed for the specified pass info.

Reimplemented from llvm::Pass.

Definition at line 60 of file LibCallAliasAnalysis.h.

References llvm::AliasAnalysis::ID.

void LibCallAliasAnalysis::getAnalysisUsage ( AnalysisUsage AU) const
virtual

getAnalysisUsage - All alias analysis implementations should invoke this directly (using AliasAnalysis::getAnalysisUsage(AU)).

Reimplemented from llvm::AliasAnalysis.

Definition at line 34 of file LibCallAliasAnalysis.cpp.

References llvm::AliasAnalysis::getAnalysisUsage(), and llvm::AnalysisUsage::setPreservesAll().

AliasAnalysis::ModRefResult LibCallAliasAnalysis::getModRefInfo ( ImmutableCallSite  CS,
const Location Loc 
)
virtual

getModRefInfo (for call sites) - Return information about whether a particular call site modifies or reads the specified memory location.

Reimplemented from llvm::AliasAnalysis.

Definition at line 120 of file LibCallAliasAnalysis.cpp.

References F(), llvm::CallSiteBase< FunTy, ValTy, UserTy, InstrTy, CallTy, InvokeTy, IterTy >::getCalledFunction(), llvm::LibCallInfo::getFunctionInfo(), llvm::AliasAnalysis::getModRefInfo(), LCI, llvm::AliasAnalysis::ModRef, and llvm::AliasAnalysis::NoModRef.

ModRefResult llvm::LibCallAliasAnalysis::getModRefInfo ( ImmutableCallSite  CS1,
ImmutableCallSite  CS2 
)
inlinevirtual

getModRefInfo - Return information about whether two call sites may refer to the same set of memory locations. See http://llvm.org/docs/AliasAnalysis.html#ModRefInfo for details.

Reimplemented from llvm::AliasAnalysis.

Definition at line 43 of file LibCallAliasAnalysis.h.

References llvm::AliasAnalysis::getModRefInfo().

virtual bool llvm::LibCallAliasAnalysis::runOnFunction ( Function F)
inlinevirtual

runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.

Implements llvm::FunctionPass.

Definition at line 51 of file LibCallAliasAnalysis.h.

References llvm::AliasAnalysis::InitializeAliasAnalysis().

Member Data Documentation

char LibCallAliasAnalysis::ID = 0
static

Definition at line 26 of file LibCallAliasAnalysis.h.

LibCallInfo* llvm::LibCallAliasAnalysis::LCI

Definition at line 28 of file LibCallAliasAnalysis.h.

Referenced by getModRefInfo(), and ~LibCallAliasAnalysis().


The documentation for this struct was generated from the following files: