LLVM API Documentation
This is a simple alias analysis implementation that uses knowledge of ARC constructs to answer queries. More...
#include <ObjCARCAliasAnalysis.h>
Public Member Functions | |
ObjCARCAliasAnalysis () | |
![]() | |
virtual ImmutablePass * | getAsImmutablePass () |
bool | runOnModule (Module &) |
ImmutablePass (char &pid) | |
virtual | ~ImmutablePass () |
![]() | |
Pass * | createPrinterPass (raw_ostream &O, const std::string &Banner) const |
createPrinterPass - Get a module 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... | |
ModulePass (char &pid) | |
virtual | ~ModulePass () |
![]() | |
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) |
AnalysisResolver * | getResolver () const |
virtual void | releaseMemory () |
virtual PMDataManager * | getAsPMDataManager () |
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) |
![]() | |
AliasAnalysis () | |
virtual | ~AliasAnalysis () |
const DataLayout * | getDataLayout () const |
const TargetLibraryInfo * | getTargetLibraryInfo () 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) |
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... | |
bool | pointsToConstantMemory (const Value *P, bool OrLocal=false) |
pointsToConstantMemory - A convenient wrapper. More... | |
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) |
Static Public Attributes | |
static char | ID = 0 |
![]() | |
static char | ID = 0 |
static uint64_t const | UnknownSize = ~UINT64_C(0) |
Additional Inherited Members | |
![]() | |
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 const PassInfo * | lookupPassInfo (const void *TI) |
static const PassInfo * | lookupPassInfo (StringRef Arg) |
static Pass * | createPass (AnalysisID ID) |
![]() | |
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) |
![]() | |
void | InitializeAliasAnalysis (Pass *P) |
![]() | |
const DataLayout * | TD |
const TargetLibraryInfo * | TLI |
This is a simple alias analysis implementation that uses knowledge of ARC constructs to answer queries.
TODO: This class could be generalized to know about other ObjC-specific tricks. Such as knowing that ivars in the non-fragile ABI are non-aliasing even though their offsets are dynamic.
Definition at line 38 of file ObjCARCAliasAnalysis.h.
|
inline |
Definition at line 42 of file ObjCARCAliasAnalysis.h.
References llvm::PassRegistry::getPassRegistry(), and llvm::initializeObjCARCAliasAnalysisPass().
|
static |
Definition at line 41 of file ObjCARCAliasAnalysis.h.