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:30
Enumerators
Name | Value | Comment |
---|---|---|
Retain | 0 | objc_retain |
RetainRV | 1 | objc_retainAutoreleasedReturnValue |
ClaimRV | 2 | objc_unsafeClaimAutoreleasedReturnValue |
RetainBlock | 3 | objc_retainBlock |
Release | 4 | objc_release |
Autorelease | 5 | objc_autorelease |
AutoreleaseRV | 6 | objc_autoreleaseReturnValue |
AutoreleasepoolPush | 7 | objc_autoreleasePoolPush |
AutoreleasepoolPop | 8 | objc_autoreleasePoolPop |
NoopCast | 9 | objc_retainedObject, etc. |
FusedRetainAutorelease | 10 | objc_retainAutorelease |
FusedRetainAutoreleaseRV | 11 | objc_retainAutoreleaseReturnValue |
LoadWeakRetained | 12 | objc_loadWeakRetained (primitive) |
StoreWeak | 13 | objc_storeWeak (primitive) |
InitWeak | 14 | objc_initWeak (derived) |
LoadWeak | 15 | objc_loadWeak (derived) |
MoveWeak | 16 | objc_moveWeak (derived) |
CopyWeak | 17 | objc_copyWeak (derived) |
DestroyWeak | 18 | objc_destroyWeak (derived) |
StoreStrong | 19 | objc_storeStrong (derived) |
IntrinsicUser | 20 | llvm.objc.clang.arc.use |
CallOrUser | 21 | could call objc_release and/or "use" pointers |
Call | 22 | could call objc_release |
User | 23 | could "use" a pointer |
None | 24 | anything that is inert from an ARC perspective. |