16 #ifndef LLVM_CLANG_LIB_CODEGEN_CGOBJCRUNTIME_H 17 #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,
100 llvm::Constant *beginCatchFn,
101 llvm::Constant *endCatchFn,
102 llvm::Constant *exceptionRethrowFn);
113 llvm::Function *syncEnterFn,
114 llvm::Function *syncExitFn);
121 virtual llvm::Function *ModuleInitFunction() = 0;
142 virtual llvm::Constant *GetEHType(
QualType T) = 0;
208 virtual llvm::Constant *GetPropertyGetFunction() = 0;
211 virtual llvm::Constant *GetPropertySetFunction() = 0;
214 virtual llvm::Constant *GetOptimizedPropertySetFunction(
bool atomic,
218 virtual llvm::Constant *GetGetStructFunction() = 0;
220 virtual llvm::Constant *GetSetStructFunction() = 0;
223 virtual llvm::Constant *GetCppAtomicObjectSetFunction() = 0;
226 virtual llvm::Constant *GetCppAtomicObjectGetFunction() = 0;
235 llvm_unreachable(
"autoreleasepool unsupported in this ABI");
240 virtual llvm::Constant *EnumerationMutationFunction() = 0;
248 bool ClearInsertionPoint=
true) = 0;
255 bool threadlocal=
false) = 0;
266 unsigned CVRQualifiers) = 0;
288 llvm::PointerType *messengerType)
289 : 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.
llvm::PointerType * MessengerType
VarDecl - An instance of this class is created to represent 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)
const FunctionProtoType * T
Represents Objective-C's @synchronized statement.
Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.
The l-value was considered opaque, so the alignment was determined from a type.
MessageSendInfo(const CGFunctionInfo &callInfo, llvm::PointerType *messengerType)
virtual llvm::Value * EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF)
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.