35 #define DEBUG_TYPE "objc-arc-aa"
38 using namespace llvm::objcarc;
59 if (UA != SA || UB != SB) {
140 "ObjC-ARC-Based Alias Analysis",
false,
true)
bool pointsToConstantMemory(const MemoryLocation &Loc, bool OrLocal)
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
A Module instance is used to store all the information related to an LLVM module. ...
bool pointsToConstantMemory(const MemoryLocation &Loc, bool OrLocal)
ObjCARCAAResult run(Function &F, FunctionAnalysisManager &AM)
objc_retainedObject, etc.
The two locations do not alias at all.
The two locations may or may not alias. This is the least precise result.
objc_autoreleaseReturnValue
ModRefInfo
Flags indicating whether a memory access modifies or references memory.
bool doFinalization(Module &M) override
doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes...
objc_retainAutoreleasedReturnValue
INITIALIZE_PASS(ObjCARCAAWrapperPass,"objc-arc-aa","ObjC-ARC-Based Alias Analysis", false, true) ImmutablePass *llvm
FunctionModRefBehavior
Summary of how a function affects memory in the program.
bool EnableARCOpts
A handy option to enable/disable all ARC Optimizations.
AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB)
FunctionModRefBehavior getModRefBehavior(const Function *F)
FunctionModRefBehavior getModRefBehavior(ImmutableCallSite CS)
INITIALIZE_PASS(HexagonEarlyIfConversion,"hexagon-eif","Hexagon early if conversion", false, false) bool HexagonEarlyIfConversion MachineBasicBlock * SB
The access neither references nor modifies the value stored in memory.
AliasResult
The possible results of an alias query.
Represent the analysis usage information of a pass.
ARCInstKind GetFunctionClass(const Function *F)
Determine if F is one of the special known Functions.
This file defines common analysis utilities used by the ObjC ARC Optimizer.
This file declares a simple ARC-aware AliasAnalysis using special knowledge of Objective C to enhance...
This function does not perform any non-local loads or stores to memory.
ARCInstKind GetBasicARCInstKind(const Value *V)
Determine which objc runtime call instruction class V belongs to.
const Value * Ptr
The address of the start of the location.
Representation for a specific memory location.
ImmutablePass class - This class is used to provide information that does not need to be run...
InstrTy * getInstruction() const
bool doInitialization(Module &M) override
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before ...
void initializeObjCARCAAWrapperPassPass(PassRegistry &)
AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB)
void setPreservesAll()
Set by analyses that do not transform their input at all.
This is a simple alias analysis implementation that uses knowledge of ARC constructs to answer querie...
ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc)
const DataLayout & getDataLayout() const
Get the data layout for the module's target platform.
AAMDNodes AATags
The metadata nodes which describes the aliasing of the location (each member is null if that kind of ...
ImmutableCallSite - establish a view to a call site for examination.
const Value * GetUnderlyingObjCPtr(const Value *V, const DataLayout &DL)
This is a wrapper around getUnderlyingObject which also knows how to look through objc_retain and obj...
objc_retainAutoreleaseReturnValue
ModRefInfo getModRefInfo(ImmutableCallSite CS, const MemoryLocation &Loc)
Module * getParent()
Get the module that this global value is contained inside of...
LLVM Value Representation.
Legacy wrapper pass to provide the ObjCARCAAResult object.
const Value * GetRCIdentityRoot(const Value *V)
The RCIdentity root of a value V is a dominating value U for which retaining or releasing U is equiva...
A container for analyses that lazily runs them and caches their results.
ImmutablePass * createObjCARCAAWrapperPass()
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
uint64_t Size
The maximum size of the location, in address-units, or UnknownSize if the size is not known...