enum class ARCInstKind

Description

Equivalence classes of instructions in the ARC Model. Since we do not have "instructions" to represent ARC concepts in LLVM IR, we instead operate on equivalence classes of instructions. TODO: This should be split into two enums: a runtime entry point enum (possibly united with the ARCRuntimeEntrypoint class) and an enum that deals with effects of instructions in the ARC model (which would handle the notion of a User or CallOrUser).

Declared at: llvm/include/llvm/Analysis/ObjCARCInstKind.h:28

Enumerators

NameValueComment
Retain0objc_retain
RetainRV1objc_retainAutoreleasedReturnValue
UnsafeClaimRV2objc_unsafeClaimAutoreleasedReturnValue
RetainBlock3objc_retainBlock
Release4objc_release
Autorelease5objc_autorelease
AutoreleaseRV6objc_autoreleaseReturnValue
AutoreleasepoolPush7objc_autoreleasePoolPush
AutoreleasepoolPop8objc_autoreleasePoolPop
NoopCast9objc_retainedObject, etc.
FusedRetainAutorelease10objc_retainAutorelease
FusedRetainAutoreleaseRV11objc_retainAutoreleaseReturnValue
LoadWeakRetained12objc_loadWeakRetained (primitive)
StoreWeak13objc_storeWeak (primitive)
InitWeak14objc_initWeak (derived)
LoadWeak15objc_loadWeak (derived)
MoveWeak16objc_moveWeak (derived)
CopyWeak17objc_copyWeak (derived)
DestroyWeak18objc_destroyWeak (derived)
StoreStrong19objc_storeStrong (derived)
IntrinsicUser20llvm.objc.clang.arc.use
CallOrUser21could call objc_release and/or "use" pointers
Call22could call objc_release
User23could "use" a pointer
None24anything that is inert from an ARC perspective.