23 #define DEBUG_TYPE "objc-arc-aa"
37 using namespace llvm::objcarc;
42 "ObjC-ARC-Based Alias Analysis",
false,
true,
false)
49 ObjCARCAliasAnalysis::getAnalysisUsage(
AnalysisUsage &AU)
const {
55 ObjCARCAliasAnalysis::alias(
const Location &LocA,
const Location &LocB) {
65 Location(SB, LocB.Size, LocB.TBAATag));
73 if (UA != SA || UB != SB) {
87 ObjCARCAliasAnalysis::pointsToConstantMemory(
const Location &Loc,
117 ObjCARCAliasAnalysis::getModRefBehavior(
const Function *
F) {
virtual bool pointsToConstantMemory(const Location &Loc, bool OrLocal=false)
objc_retainedObject, etc.
ModRefResult getModRefInfo(const Instruction *I, const Location &Loc)
static InstructionClass GetBasicInstructionClass(const Value *V)
Determine which objc runtime call instruction class V belongs to.
static const Value * StripPointerCastsAndObjCCalls(const Value *V)
This is a wrapper around Value::stripPointerCasts which also knows how to look through objc_retain an...
InstructionClass GetFunctionClass(const Function *F)
Determine if F is one of the special known Functions. If it isn't, return IC_CallOrUser.
bool EnableARCOpts
A handy option to enable/disable all ARC Optimizations.
This is a simple alias analysis implementation that uses knowledge of ARC constructs to answer querie...
InstrTy * getInstruction() const
virtual AliasResult alias(const Location &LocA, const Location &LocB)
virtual ModRefBehavior getModRefBehavior(ImmutableCallSite CS)
getModRefBehavior - Return the behavior when calling the given call site.
ImmutablePass * createObjCARCAliasAnalysisPass()
objc_autoreleaseReturnValue
ImmutableCallSite - establish a view to a call site for examination.
objc_retainAutoreleasedReturnValue
objc_retainAutoreleaseReturnValue
LLVM Value Representation.
INITIALIZE_AG_PASS(ObjCARCAliasAnalysis, AliasAnalysis,"objc-arc-aa","ObjC-ARC-Based Alias Analysis", false, true, false) ImmutablePass *llvm
virtual void getAnalysisUsage(AnalysisUsage &AU) const
static const Value * GetUnderlyingObjCPtr(const Value *V)
This is a wrapper around getUnderlyingObject which also knows how to look through objc_retain and obj...