22#ifndef LLVM_LIB_TRANSFORMS_OBJCARC_ARCRUNTIMEENTRYPOINTS_H
23#define LLVM_LIB_TRANSFORMS_OBJCARC_ARCRUNTIMEENTRYPOINTS_H
61 AutoreleaseRV =
nullptr;
64 RetainBlock =
nullptr;
65 Autorelease =
nullptr;
66 StoreStrong =
nullptr;
69 UnsafeClaimRV =
nullptr;
70 RetainAutorelease =
nullptr;
71 RetainAutoreleaseRV =
nullptr;
72 AutoreleasePoolPush =
nullptr;
73 AutoreleasePoolPop =
nullptr;
77 assert(TheModule !=
nullptr &&
"Not initialized.");
81 return getIntrinsicEntryPoint(AutoreleaseRV,
82 Intrinsic::objc_autoreleaseReturnValue);
84 return getIntrinsicEntryPoint(Release, Intrinsic::objc_release);
86 return getIntrinsicEntryPoint(Retain, Intrinsic::objc_retain);
88 return getIntrinsicEntryPoint(RetainBlock, Intrinsic::objc_retainBlock);
90 return getIntrinsicEntryPoint(Autorelease, Intrinsic::objc_autorelease);
92 return getIntrinsicEntryPoint(StoreStrong, Intrinsic::objc_storeStrong);
94 return getIntrinsicEntryPoint(RetainRV,
95 Intrinsic::objc_retainAutoreleasedReturnValue);
97 return getIntrinsicEntryPoint(
98 ClaimRV, Intrinsic::objc_claimAutoreleasedReturnValue);
100 return getIntrinsicEntryPoint(
101 UnsafeClaimRV, Intrinsic::objc_unsafeClaimAutoreleasedReturnValue);
103 return getIntrinsicEntryPoint(RetainAutorelease,
104 Intrinsic::objc_retainAutorelease);
106 return getIntrinsicEntryPoint(RetainAutoreleaseRV,
107 Intrinsic::objc_retainAutoreleaseReturnValue);
109 return getIntrinsicEntryPoint(AutoreleasePoolPush,
110 Intrinsic::objc_autoreleasePoolPush);
112 return getIntrinsicEntryPoint(AutoreleasePoolPop,
113 Intrinsic::objc_autoreleasePoolPop);
121 Module *TheModule =
nullptr;
151 Function *RetainAutorelease =
nullptr;
154 Function *RetainAutoreleaseRV =
nullptr;
157 Function *AutoreleasePoolPush =
nullptr;
160 Function *AutoreleasePoolPop =
nullptr;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file contains the simple types necessary to represent the attributes associated with functions a...
Machine Check Debug Module
A Module instance is used to store all the information related to an LLVM module.
Declarations for ObjC runtime functions and constants.
ARCRuntimeEntryPoints()=default
Function * get(ARCRuntimeEntryPointKind kind)
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
LLVM_ABI Function * getOrInsertDeclaration(Module *M, ID id, ArrayRef< Type * > Tys={})
Look up the Function declaration of the intrinsic id in the Module M.
@ StoreStrong
objc_storeStrong (derived)
@ Autorelease
objc_autorelease
@ RetainRV
objc_retainAutoreleasedReturnValue
@ RetainBlock
objc_retainBlock
@ AutoreleaseRV
objc_autoreleaseReturnValue
@ UnsafeClaimRV
objc_unsafeClaimAutoreleasedReturnValue
This is an optimization pass for GlobalISel generic memory operations.