LLVM
8.0.1
|
This is a simple alias analysis implementation that uses knowledge of ARC constructs to answer queries. More...
#include "llvm/Analysis/ObjCARCAliasAnalysis.h"
Additional Inherited Members | |
Protected Member Functions inherited from llvm::AAResultBase< ObjCARCAAResult > | |
AAResultBase ()=default | |
AAResultBase (const AAResultBase &Arg) | |
AAResultBase (AAResultBase &&Arg) | |
AAResultsProxy | getBestAAResults () |
Get a proxy for the best AA result set to query at this time. More... | |
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.
|
inlineexplicit |
Definition at line 44 of file ObjCARCAliasAnalysis.h.
Referenced by llvm::objcarc::ObjCARCAA::run().
|
inline |
Definition at line 45 of file ObjCARCAliasAnalysis.h.
AliasResult ObjCARCAAResult::alias | ( | const MemoryLocation & | LocA, |
const MemoryLocation & | LocB | ||
) |
Definition at line 40 of file ObjCARCAliasAnalysis.cpp.
References llvm::MemoryLocation::AATags, llvm::AAResultBase< DerivedT >::alias(), llvm::objcarc::EnableARCOpts, llvm::objcarc::GetRCIdentityRoot(), llvm::objcarc::GetUnderlyingObjCPtr(), llvm::MayAlias, llvm::NoAlias, llvm::MemoryLocation::Ptr, and llvm::MemoryLocation::Size.
Referenced by invalidate().
FunctionModRefBehavior ObjCARCAAResult::getModRefBehavior | ( | const Function * | F | ) |
Definition at line 95 of file ObjCARCAliasAnalysis.cpp.
References llvm::objcarc::EnableARCOpts, llvm::FMRB_DoesNotAccessMemory, llvm::objcarc::GetFunctionClass(), llvm::AAResultBase< DerivedT >::getModRefBehavior(), and llvm::objcarc::NoopCast.
Referenced by invalidate().
ModRefInfo ObjCARCAAResult::getModRefInfo | ( | const CallBase * | Call, |
const MemoryLocation & | Loc | ||
) |
Definition at line 109 of file ObjCARCAliasAnalysis.cpp.
References llvm::objcarc::Autorelease, llvm::objcarc::AutoreleasepoolPush, llvm::objcarc::AutoreleaseRV, llvm::objcarc::EnableARCOpts, llvm::objcarc::FusedRetainAutorelease, llvm::objcarc::FusedRetainAutoreleaseRV, llvm::objcarc::GetBasicARCInstKind(), llvm::AAResultBase< DerivedT >::getModRefInfo(), llvm::NoModRef, llvm::objcarc::NoopCast, llvm::objcarc::Retain, and llvm::objcarc::RetainRV.
Referenced by invalidate().
|
inline |
Handle invalidation events from the new pass manager.
By definition, this result is stateless and so remains valid.
Definition at line 51 of file ObjCARCAliasAnalysis.h.
References alias(), llvm::objcarc::Call, F(), getModRefBehavior(), llvm::AAResultBase< DerivedT >::getModRefBehavior(), getModRefInfo(), llvm::AAResultBase< DerivedT >::getModRefInfo(), and pointsToConstantMemory().
bool ObjCARCAAResult::pointsToConstantMemory | ( | const MemoryLocation & | Loc, |
bool | OrLocal | ||
) |
Definition at line 72 of file ObjCARCAliasAnalysis.cpp.
References llvm::MemoryLocation::AATags, llvm::objcarc::EnableARCOpts, llvm::objcarc::GetRCIdentityRoot(), llvm::objcarc::GetUnderlyingObjCPtr(), llvm::AAResultBase< DerivedT >::pointsToConstantMemory(), llvm::MemoryLocation::Ptr, and llvm::MemoryLocation::Size.
Referenced by invalidate().