15 #ifndef LLVM_CLANG_LIB_CODEGEN_CGOBJCRUNTIME_H 16 #define LLVM_CLANG_LIB_CODEGEN_CGOBJCRUNTIME_H 36 class CodeGenFunction;
41 class ObjCAtThrowStmt;
42 class ObjCAtSynchronizedStmt;
43 class ObjCContainerDecl;
44 class ObjCCategoryImplDecl;
45 class ObjCImplementationDecl;
46 class ObjCInterfaceDecl;
47 class ObjCMessageExpr;
49 class ObjCProtocolDecl;
52 class ObjCStringLiteral;
53 class BlockDeclRefExpr;
89 unsigned CVRQualifiers,
99 llvm::FunctionCallee beginCatchFn,
100 llvm::FunctionCallee endCatchFn,
101 llvm::FunctionCallee exceptionRethrowFn);
112 llvm::FunctionCallee syncEnterFn,
113 llvm::FunctionCallee syncExitFn);
120 virtual llvm::Function *ModuleInitFunction() = 0;
141 virtual llvm::Constant *GetEHType(
QualType T) = 0;
185 bool isClassMessage);
230 virtual llvm::FunctionCallee GetPropertyGetFunction() = 0;
233 virtual llvm::FunctionCallee GetPropertySetFunction() = 0;
236 virtual llvm::FunctionCallee GetOptimizedPropertySetFunction(
bool atomic,
240 virtual llvm::FunctionCallee GetGetStructFunction() = 0;
242 virtual llvm::FunctionCallee GetSetStructFunction() = 0;
245 virtual llvm::FunctionCallee GetCppAtomicObjectSetFunction() = 0;
248 virtual llvm::FunctionCallee GetCppAtomicObjectGetFunction() = 0;
257 llvm_unreachable(
"autoreleasepool unsupported in this ABI");
262 virtual llvm::FunctionCallee EnumerationMutationFunction() = 0;
270 bool ClearInsertionPoint=
true) = 0;
277 bool threadlocal=
false) = 0;
288 unsigned CVRQualifiers) = 0;
314 llvm::PointerType *messengerType)
315 : CallInfo(callInfo), MessengerType(messengerType) {}
ReturnValueSlot - Contains the address where the return value of a function can be stored...
Smart pointer class that efficiently represents Objective-C method names.
A (possibly-)qualified type.
Specialize PointerLikeTypeTraits to allow LazyGenerationalUpdatePtr to be placed into a PointerUnion...
Implements runtime-specific code generation functions.
Represents Objective-C's @throw statement.
constexpr XRayInstrMask Function
llvm::PointerType * MessengerType
Represents a variable declaration or definition.
ObjCMethodDecl - Represents an instance or class method declaration.
CodeGenFunction - This class organizes the per-function state that is used while generating LLVM code...
virtual std::string getRCBlockLayoutStr(CodeGen::CodeGenModule &CGM, const CGBlockInfo &blockInfo)
ObjCContainerDecl - Represents a container for method declarations.
CGObjCRuntime * CreateMacObjCRuntime(CodeGenModule &CGM)
CodeGen::CodeGenModule & CGM
Represents an Objective-C protocol declaration.
Represents an ObjC class declaration.
CGBlockInfo - Information to generate a block literal.
RValue - This trivial value class is used to represent the result of an expression that is evaluated...
CGObjCRuntime(CodeGen::CodeGenModule &CGM)
Represents Objective-C's @synchronized statement.
Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.
virtual CatchTypeInfo getCatchAllTypeInfo()
MessageSendInfo(const CGFunctionInfo &callInfo, llvm::PointerType *messengerType)
virtual llvm::Value * EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF)
The MS C++ ABI needs a pointer to RTTI data plus some flags to describe the type of a catch handler...
CGFunctionInfo - Class to encapsulate the information about a function definition.
This class organizes the cross-function state that is used while generating LLVM code.
Optional< types::ID > Type
Dataflow Directional Tag Classes.
const CGFunctionInfo & CallInfo
ObjCImplementationDecl - Represents a class definition - this is where method definitions are specifi...
A specialization of Address that requires the address to be an LLVM Constant.
ObjCIvarDecl - Represents an ObjC instance variable.
Represents Objective-C's @try ... @catch ... @finally statement.
StringLiteral - This represents a string literal expression, e.g.
LValue - This represents an lvalue references.
CallArgList - Type for representing both the value and type of arguments in a call.
ObjCCategoryImplDecl - An object of this class encapsulates a category @implementation declaration...
ObjCCompatibleAliasDecl - Represents alias of a class.
CGObjCRuntime * CreateGNUObjCRuntime(CodeGenModule &CGM)
Creates an instance of an Objective-C runtime class.