16 #ifndef LLVM_CLANG_LIB_CODEGEN_CGOBJCRUNTIME_H 17 #define LLVM_CLANG_LIB_CODEGEN_CGOBJCRUNTIME_H 37 class CodeGenFunction;
42 class ObjCAtThrowStmt;
43 class ObjCAtSynchronizedStmt;
44 class ObjCContainerDecl;
45 class ObjCCategoryImplDecl;
46 class ObjCImplementationDecl;
47 class ObjCInterfaceDecl;
48 class ObjCMessageExpr;
50 class ObjCProtocolDecl;
53 class ObjCStringLiteral;
54 class BlockDeclRefExpr;
90 unsigned CVRQualifiers,
101 llvm::Constant *beginCatchFn,
102 llvm::Constant *endCatchFn,
103 llvm::Constant *exceptionRethrowFn);
114 llvm::Function *syncEnterFn,
115 llvm::Function *syncExitFn);
122 virtual llvm::Function *ModuleInitFunction() = 0;
143 virtual llvm::Constant *GetEHType(
QualType T) = 0;
211 virtual llvm::Constant *GetPropertyGetFunction() = 0;
214 virtual llvm::Constant *GetPropertySetFunction() = 0;
217 virtual llvm::Constant *GetOptimizedPropertySetFunction(
bool atomic,
221 virtual llvm::Constant *GetGetStructFunction() = 0;
223 virtual llvm::Constant *GetSetStructFunction() = 0;
226 virtual llvm::Constant *GetCppAtomicObjectSetFunction() = 0;
229 virtual llvm::Constant *GetCppAtomicObjectGetFunction() = 0;
238 llvm_unreachable(
"autoreleasepool unsupported in this ABI");
243 virtual llvm::Constant *EnumerationMutationFunction() = 0;
251 bool ClearInsertionPoint=
true) = 0;
258 bool threadlocal=
false) = 0;
269 unsigned CVRQualifiers) = 0;
291 llvm::PointerType *messengerType)
292 : 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.
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...
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...
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.
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.