LLVM API Documentation
Functions | |
| static const Value * | FindSingleUseIdentifiedObject (const Value *Arg) |
| This is similar to StripPointerCastsAndObjCCalls but it stops as soon as it finds a value with multiple uses. | |
| static bool | DoesRetainableObjPtrEscape (const User *Ptr) |
| Test whether the given retainable object pointer escapes. | |
| static bool | AreAnyUnderlyingObjectsAnAlloca (const Value *V) |
This is a wrapper around getUnderlyingObjCPtr along the lines of GetUnderlyingObjects except that it returns early when it sees the first alloca.
Definition at line 265 of file ObjCARCOpts.cpp.
References llvm::SmallVectorBase::empty(), llvm::objcarc::GetUnderlyingObjCPtr(), llvm::SmallPtrSet< PtrType, SmallSize >::insert(), P, llvm::SmallVectorImpl< T >::pop_back_val(), and llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back().
Test whether the given retainable object pointer escapes.
This differs from regular escape analysis in that a use as an argument to a call is not considered an escape.
Definition at line 182 of file ObjCARCOpts.cpp.
References llvm::dbgs(), DEBUG, llvm::SmallVectorBase::empty(), llvm::objcarc::GetBasicInstructionClass(), llvm::ARM_PROC::I, llvm::objcarc::IC_Autorelease, llvm::objcarc::IC_AutoreleaseRV, llvm::objcarc::IC_InitWeak, llvm::objcarc::IC_IntrinsicUser, llvm::objcarc::IC_None, llvm::objcarc::IC_StoreStrong, llvm::objcarc::IC_StoreWeak, llvm::objcarc::IC_User, llvm::SmallPtrSet< PtrType, SmallSize >::insert(), llvm::User::op_begin(), llvm::User::op_end(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::Value::use_begin(), and llvm::Value::use_end().
This is similar to StripPointerCastsAndObjCCalls but it stops as soon as it finds a value with multiple uses.
Definition at line 146 of file ObjCARCOpts.cpp.
References llvm::objcarc::GetBasicInstructionClass(), llvm::Value::hasOneUse(), llvm::objcarc::IsForwarding(), llvm::objcarc::IsObjCIdentifiedObject(), llvm::objcarc::StripPointerCastsAndObjCCalls(), llvm::Value::use_begin(), llvm::Value::use_empty(), and llvm::Value::use_end().