10 #ifndef LLVM_LIB_TRANSFORMS_OBJCARC_ARCINSTKIND_H
11 #define LLVM_LIB_TRANSFORMS_OBJCARC_ARCINSTKIND_H
102 if (
const CallInst *CI = dyn_cast<CallInst>(V)) {
103 if (
const Function *
F = CI->getCalledFunction())
ARCInstKind GetARCInstKind(const Value *V)
Map V to its ARCInstKind equivalence class.
objc_destroyWeak (derived)
bool IsUser(ARCInstKind Class)
Test if the given class is a kind of user.
objc_loadWeakRetained (primitive)
could call objc_release and/or "use" pointers
CallInst - This class represents a function call, abstracting a target machine's calling convention...
objc_retainedObject, etc.
static ARCInstKind GetBasicARCInstKind(const Value *V)
Determine which objc runtime call instruction class V belongs to.
bool IsNoopOnNull(ARCInstKind Class)
Test if the given class represents instructions which do nothing if passed a null pointer...
bool IsForwarding(ARCInstKind Class)
Test if the given class represents instructions which return their argument verbatim.
objc_autoreleaseReturnValue
objc_retainAutoreleasedReturnValue
bool IsAlwaysTail(ARCInstKind Class)
Test if the given class represents instructions which are always safe to mark with the "tail" keyword...
raw_ostream & operator<<(raw_ostream &OS, const ARCInstKind Class)
ARCInstKind GetFunctionClass(const Function *F)
Determine if F is one of the special known Functions.
anything that is inert from an ARC perspective.
bool CanDecrementRefCount(ARCInstKind Kind)
Returns false if conservatively we can prove that any instruction mapped to this kind can not decreme...
ARCInstKind
Equivalence classes of instructions in the ARC Model.
bool IsNoThrow(ARCInstKind Class)
Test if the given class represents instructions which are always safe to mark with the nounwind attri...
objc_storeStrong (derived)
bool IsRetain(ARCInstKind Class)
Test if the given class is objc_retain or equivalent.
objc_storeWeak (primitive)
objc_retainAutoreleaseReturnValue
const ARM::ArchExtKind Kind
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream...
bool CanInterruptRV(ARCInstKind Class)
Test whether the given instruction can autorelease any pointer or cause an autoreleasepool pop...
bool IsNeverTail(ARCInstKind Class)
Test if the given class represents instructions which are never safe to mark with the "tail" keyword...
bool IsAutorelease(ARCInstKind Class)
Test if the given class is objc_autorelease or equivalent.