clang 20.0.0git
|
Implements runtime-specific code generation functions. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/CGObjCRuntime.h"
Classes | |
struct | MessageSendInfo |
Public Member Functions | |
virtual | ~CGObjCRuntime () |
std::string | getSymbolNameForMethod (const ObjCMethodDecl *method, bool includeCategoryName=true) |
virtual llvm::Function * | ModuleInitFunction ()=0 |
Generate the function required to register all Objective-C components in this compilation unit with the runtime library. | |
virtual llvm::Value * | GetSelector (CodeGenFunction &CGF, Selector Sel)=0 |
Get a selector for the specified name and type values. | |
virtual Address | GetAddrOfSelector (CodeGenFunction &CGF, Selector Sel)=0 |
Get the address of a selector for the specified name and type values. | |
virtual llvm::Value * | GetSelector (CodeGenFunction &CGF, const ObjCMethodDecl *Method)=0 |
Get a typed selector. | |
virtual llvm::Constant * | GetEHType (QualType T)=0 |
Get the type constant to catch for the given ObjC pointer type. | |
virtual CatchTypeInfo | getCatchAllTypeInfo () |
virtual ConstantAddress | GenerateConstantString (const StringLiteral *)=0 |
Generate a constant string object. | |
virtual void | GenerateCategory (const ObjCCategoryImplDecl *OCD)=0 |
Generate a category. | |
virtual void | GenerateClass (const ObjCImplementationDecl *OID)=0 |
Generate a class structure for this class. | |
virtual void | RegisterAlias (const ObjCCompatibleAliasDecl *OAD)=0 |
Register an class alias. | |
virtual CodeGen::RValue | GenerateMessageSend (CodeGen::CodeGenFunction &CGF, ReturnValueSlot ReturnSlot, QualType ResultType, Selector Sel, llvm::Value *Receiver, const CallArgList &CallArgs, const ObjCInterfaceDecl *Class=nullptr, const ObjCMethodDecl *Method=nullptr)=0 |
Generate an Objective-C message send operation. | |
CodeGen::RValue | GeneratePossiblySpecializedMessageSend (CodeGenFunction &CGF, ReturnValueSlot Return, QualType ResultType, Selector Sel, llvm::Value *Receiver, const CallArgList &Args, const ObjCInterfaceDecl *OID, const ObjCMethodDecl *Method, bool isClassMessage) |
Generate an Objective-C message send operation. | |
virtual CodeGen::RValue | GenerateMessageSendSuper (CodeGen::CodeGenFunction &CGF, ReturnValueSlot ReturnSlot, QualType ResultType, Selector Sel, const ObjCInterfaceDecl *Class, bool isCategoryImpl, llvm::Value *Self, bool IsClassMessage, const CallArgList &CallArgs, const ObjCMethodDecl *Method=nullptr)=0 |
Generate an Objective-C message send operation to the super class initiated in a method for Class and with the given Self object. | |
std::vector< const ObjCProtocolDecl * > | GetRuntimeProtocolList (ObjCProtocolDecl::protocol_iterator begin, ObjCProtocolDecl::protocol_iterator end) |
Walk the list of protocol references from a class, category or protocol to traverse the DAG formed from it's inheritance hierarchy. | |
virtual llvm::Value * | GenerateProtocolRef (CodeGenFunction &CGF, const ObjCProtocolDecl *OPD)=0 |
Emit the code to return the named protocol as an object, as in a @protocol expression. | |
virtual void | GenerateProtocol (const ObjCProtocolDecl *OPD)=0 |
Generate the named protocol. | |
virtual llvm::Constant * | GetOrEmitProtocol (const ObjCProtocolDecl *PD)=0 |
GetOrEmitProtocol - Get the protocol object for the given declaration, emitting it if necessary. | |
virtual llvm::Function * | GenerateMethod (const ObjCMethodDecl *OMD, const ObjCContainerDecl *CD)=0 |
Generate a function preamble for a method with the specified types. | |
virtual void | GenerateDirectMethodPrologue (CodeGenFunction &CGF, llvm::Function *Fn, const ObjCMethodDecl *OMD, const ObjCContainerDecl *CD)=0 |
Generates prologue for direct Objective-C Methods. | |
virtual llvm::FunctionCallee | GetPropertyGetFunction ()=0 |
Return the runtime function for getting properties. | |
virtual llvm::FunctionCallee | GetPropertySetFunction ()=0 |
Return the runtime function for setting properties. | |
virtual llvm::FunctionCallee | GetOptimizedPropertySetFunction (bool atomic, bool copy)=0 |
Return the runtime function for optimized setting properties. | |
virtual llvm::FunctionCallee | GetGetStructFunction ()=0 |
virtual llvm::FunctionCallee | GetSetStructFunction ()=0 |
virtual llvm::FunctionCallee | GetCppAtomicObjectSetFunction ()=0 |
API for atomic copying of qualified aggregates with non-trivial copy assignment (c++) in setter. | |
virtual llvm::FunctionCallee | GetCppAtomicObjectGetFunction ()=0 |
API for atomic copying of qualified aggregates with non-trivial copy assignment (c++) in getter. | |
virtual llvm::Value * | GetClass (CodeGenFunction &CGF, const ObjCInterfaceDecl *OID)=0 |
GetClass - Return a reference to the class for the given interface decl. | |
virtual llvm::Value * | EmitNSAutoreleasePoolClassRef (CodeGenFunction &CGF) |
virtual llvm::FunctionCallee | EnumerationMutationFunction ()=0 |
EnumerationMutationFunction - Return the function that's called by the compiler when a mutation is detected during foreach iteration. | |
virtual void | EmitSynchronizedStmt (CodeGen::CodeGenFunction &CGF, const ObjCAtSynchronizedStmt &S)=0 |
virtual void | EmitTryStmt (CodeGen::CodeGenFunction &CGF, const ObjCAtTryStmt &S)=0 |
virtual void | EmitThrowStmt (CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S, bool ClearInsertionPoint=true)=0 |
virtual llvm::Value * | EmitObjCWeakRead (CodeGen::CodeGenFunction &CGF, Address AddrWeakObj)=0 |
virtual void | EmitObjCWeakAssign (CodeGen::CodeGenFunction &CGF, llvm::Value *src, Address dest)=0 |
virtual void | EmitObjCGlobalAssign (CodeGen::CodeGenFunction &CGF, llvm::Value *src, Address dest, bool threadlocal=false)=0 |
virtual void | EmitObjCIvarAssign (CodeGen::CodeGenFunction &CGF, llvm::Value *src, Address dest, llvm::Value *ivarOffset)=0 |
virtual void | EmitObjCStrongCastAssign (CodeGen::CodeGenFunction &CGF, llvm::Value *src, Address dest)=0 |
virtual LValue | EmitObjCValueForIvar (CodeGen::CodeGenFunction &CGF, QualType ObjectTy, llvm::Value *BaseValue, const ObjCIvarDecl *Ivar, unsigned CVRQualifiers)=0 |
virtual llvm::Value * | EmitIvarOffset (CodeGen::CodeGenFunction &CGF, const ObjCInterfaceDecl *Interface, const ObjCIvarDecl *Ivar)=0 |
virtual void | EmitGCMemmoveCollectable (CodeGen::CodeGenFunction &CGF, Address DestPtr, Address SrcPtr, llvm::Value *Size)=0 |
virtual llvm::Constant * | BuildGCBlockLayout (CodeGen::CodeGenModule &CGM, const CodeGen::CGBlockInfo &blockInfo)=0 |
virtual llvm::Constant * | BuildRCBlockLayout (CodeGen::CodeGenModule &CGM, const CodeGen::CGBlockInfo &blockInfo)=0 |
virtual std::string | getRCBlockLayoutStr (CodeGen::CodeGenModule &CGM, const CGBlockInfo &blockInfo) |
virtual llvm::Constant * | BuildByrefLayout (CodeGen::CodeGenModule &CGM, QualType T)=0 |
Returns an i8* which points to the byref layout information. | |
MessageSendInfo | getMessageSendInfo (const ObjCMethodDecl *method, QualType resultType, CallArgList &callArgs) |
Compute the pointer-to-function type to which a message send should be casted in order to correctly call the given method with the given arguments. | |
bool | canMessageReceiverBeNull (CodeGenFunction &CGF, const ObjCMethodDecl *method, bool isSuper, const ObjCInterfaceDecl *classReceiver, llvm::Value *receiver) |
unsigned | ComputeBitfieldBitOffset (CodeGen::CodeGenModule &CGM, const ObjCInterfaceDecl *ID, const ObjCIvarDecl *Ivar) |
Static Public Member Functions | |
static bool | isWeakLinkedClass (const ObjCInterfaceDecl *cls) |
static void | destroyCalleeDestroyedArguments (CodeGenFunction &CGF, const ObjCMethodDecl *method, const CallArgList &callArgs) |
Destroy the callee-destroyed arguments of the given method, if it has any. | |
Protected Member Functions | |
CGObjCRuntime (CodeGen::CodeGenModule &CGM) | |
uint64_t | ComputeIvarBaseOffset (CodeGen::CodeGenModule &CGM, const ObjCInterfaceDecl *OID, const ObjCIvarDecl *Ivar) |
Compute an offset to the given ivar, suitable for passing to EmitValueForIvarAtOffset. | |
uint64_t | ComputeIvarBaseOffset (CodeGen::CodeGenModule &CGM, const ObjCImplementationDecl *OID, const ObjCIvarDecl *Ivar) |
LValue | EmitValueForIvarAtOffset (CodeGen::CodeGenFunction &CGF, const ObjCInterfaceDecl *OID, llvm::Value *BaseValue, const ObjCIvarDecl *Ivar, unsigned CVRQualifiers, llvm::Value *Offset) |
void | EmitTryCatchStmt (CodeGenFunction &CGF, const ObjCAtTryStmt &S, llvm::FunctionCallee beginCatchFn, llvm::FunctionCallee endCatchFn, llvm::FunctionCallee exceptionRethrowFn) |
Emits a try / catch statement. | |
void | EmitInitOfCatchParam (CodeGenFunction &CGF, llvm::Value *exn, const VarDecl *paramDecl) |
void | EmitAtSynchronizedStmt (CodeGenFunction &CGF, const ObjCAtSynchronizedStmt &S, llvm::FunctionCallee syncEnterFn, llvm::FunctionCallee syncExitFn) |
Emits an @synchronize() statement, using the syncEnterFn and syncExitFn arguments as the functions called to lock and unlock the object. | |
Protected Attributes | |
CodeGen::CodeGenModule & | CGM |
Implements runtime-specific code generation functions.
Definition at line 65 of file CGObjCRuntime.h.
|
inlineprotected |
Definition at line 68 of file CGObjCRuntime.h.
|
virtual |
Definition at line 4084 of file CGObjC.cpp.
|
pure virtual |
Returns an i8* which points to the byref layout information.
|
pure virtual |
Referenced by buildBlockDescriptor().
|
pure virtual |
Referenced by buildBlockDescriptor().
bool CGObjCRuntime::canMessageReceiverBeNull | ( | CodeGenFunction & | CGF, |
const ObjCMethodDecl * | method, | ||
bool | isSuper, | ||
const ObjCInterfaceDecl * | classReceiver, | ||
llvm::Value * | receiver | ||
) |
Definition at line 386 of file CGObjCRuntime.cpp.
References clang::CodeGen::CodeGenFunction::CurCodeDecl, clang::CodeGen::Address::emitRawPointer(), clang::CodeGen::CodeGenFunction::GetAddrOfLocalVar(), clang::ObjCMethodDecl::isClassMethod(), and isWeakLinkedClass().
unsigned CGObjCRuntime::ComputeBitfieldBitOffset | ( | CodeGen::CodeGenModule & | CGM, |
const ObjCInterfaceDecl * | ID, | ||
const ObjCIvarDecl * | Ivar | ||
) |
Definition at line 46 of file CGObjCRuntime.cpp.
References CGM, clang::CodeGen::CodeGenModule::getContext(), and clang::ASTContext::lookupFieldBitOffset().
|
protected |
Definition at line 38 of file CGObjCRuntime.cpp.
References CGM, clang::ASTContext::getCharWidth(), clang::ObjCImplDecl::getClassInterface(), clang::CodeGen::CodeGenModule::getContext(), and clang::ASTContext::lookupFieldBitOffset().
|
protected |
Compute an offset to the given ivar, suitable for passing to EmitValueForIvarAtOffset.
Note that the correct handling of bit-fields is carefully coordinated by these two, use caution!
The latter overload is suitable for computing the offset of a sythesized ivar.
Definition at line 31 of file CGObjCRuntime.cpp.
References CGM, clang::ASTContext::getCharWidth(), clang::CodeGen::CodeGenModule::getContext(), and clang::ASTContext::lookupFieldBitOffset().
|
static |
Destroy the callee-destroyed arguments of the given method, if it has any.
Used for nil-receiver paths in message sends. Never does anything if the method does not satisfy hasParamDestroyedInCallee().
callArgs | - just the formal arguments, not including implicit arguments such as self and cmd |
Definition at line 429 of file CGObjCRuntime.cpp.
References clang::CodeGen::ARCImpreciseLifetime, clang::CodeGen::CodeGenFunction::destroyCXXObject, clang::CodeGen::CodeGenFunction::destroyNonTrivialCStruct, clang::QualType::DK_cxx_destructor, clang::QualType::DK_nontrivial_c_struct, clang::CodeGen::CodeGenFunction::EmitARCRelease(), clang::CodeGen::RValue::getAggregateAddress(), clang::Type::getAs(), clang::CodeGen::RValue::getScalarVal(), clang::ValueDecl::getType(), clang::Decl::hasAttr(), clang::QualType::isDestructedType(), clang::CodeGen::RValue::isScalar(), clang::ObjCMethodDecl::param_begin(), and clang::ObjCMethodDecl::param_end().
|
protected |
Emits an @synchronize() statement, using the syncEnterFn
and syncExitFn
arguments as the functions called to lock and unlock the object.
This function can be called by subclasses that use zero-cost exception handling.
Definition at line 324 of file CGObjCRuntime.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::EHStack, clang::CodeGen::CodeGenFunction::EmitARCRetainScalarExpr(), clang::CodeGen::CodeGenFunction::EmitObjCConsumeObject(), clang::CodeGen::CodeGenFunction::EmitScalarExpr(), clang::CodeGen::CodeGenFunction::EmitStmt(), clang::CodeGen::CodeGenFunction::getLangOpts(), clang::Expr::getType(), clang::CodeGen::NormalAndEHCleanup, and clang::CodeGen::CodeGenTypeCache::VoidPtrTy.
|
pure virtual |
|
protected |
Definition at line 287 of file CGObjCRuntime.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CGBuilderTy::CreateStore(), clang::CodeGen::CodeGenFunction::EmitARCInitWeak(), clang::CodeGen::CodeGenFunction::EmitARCRetainNonBlock(), clang::CodeGen::CodeGenFunction::GetAddrOfLocalVar(), clang::Qualifiers::getObjCLifetime(), clang::QualType::getQualifiers(), clang::ValueDecl::getType(), clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, and clang::Qualifiers::OCL_Weak.
Referenced by EmitTryCatchStmt().
|
pure virtual |
|
inlinevirtual |
Definition at line 276 of file CGObjCRuntime.h.
|
pure virtual |
Referenced by EmitDeclInit().
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
Referenced by EmitDeclInit().
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
protected |
Emits a try / catch statement.
This function is intended to be called by subclasses, and provides a generic mechanism for generating these, which should be usable by all runtimes. The caller must provide the functions to call when entering and exiting a @catch() block, and the function used to rethrow exceptions. If the begin and end catch functions are NULL, then the function assumes that the EH personality function provides the thrown object directly.
Definition at line 142 of file CGObjCRuntime.cpp.
References clang::CodeGen::CodeGenFunction::Builder, CGM, clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CodeGenFunction::createBasicBlock(), clang::CodeGen::CodeGenFunction::CurFn, clang::CodeGen::CodeGenFunction::CurFuncDecl, clang::CodeGen::CodeGenFunction::CurrentFuncletPad, clang::CodeGen::CodeGenFunction::CurSEHParent, E, clang::CodeGen::CodeGenFunction::EHStack, clang::CodeGen::CodeGenFunction::EmitAutoVarDecl(), clang::CodeGen::CodeGenFunction::EmitBlock(), clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup(), EmitInitOfCatchParam(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::Address::emitRawPointer(), clang::CodeGen::CodeGenFunction::EmitStmt(), clang::CodeGen::CodeGenFunction::FinallyInfo::enter(), clang::CodeGen::CodeGenFunction::FinallyInfo::exit(), clang::CodeGen::CodeGenFunction::FinishFunction(), clang::CodeGen::CodeGenFunction::LexicalScope::ForceCleanup(), clang::CodeGen::EHPersonality::get(), clang::CodeGen::CodeGenFunction::JumpDest::getBlock(), getCatchAllTypeInfo(), GetEHType(), clang::Stmt::getEndLoc(), clang::CodeGen::CodeGenFunction::getExceptionFromSlot(), clang::CodeGen::CodeGenFunction::getExceptionSlot(), clang::CodeGen::CodeGenFunction::getJumpDestInCurrentScope(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenFunction::JumpDest::isValid(), clang::CodeGen::NormalAndEHCleanup, clang::CodeGen::NormalCleanup, clang::CodeGen::CodeGenFunction::ObjCEHValueStack, clang::CodeGen::CodeGenFunction::popCatchScope(), clang::CodeGen::EHScopeStack::pushCatch(), clang::CodeGen::CodeGenFunction::pushSEHCleanup(), clang::CodeGen::EHCatchScope::setHandler(), clang::CodeGen::CodeGenFunction::startOutlinedSEHHelper(), and clang::CodeGen::EHPersonality::usesFuncletPads().
|
pure virtual |
|
protected |
Definition at line 54 of file CGObjCRuntime.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGBuilderTy::CreateInBoundsGEP(), clang::CodeGen::Decl, clang::CharUnits::fromQuantity(), clang::FieldDecl::getBitWidthValue(), clang::TargetInfo::getCharAlign(), clang::ASTContext::getCharWidth(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenFunction::getLLVMContext(), clang::ASTContext::getObjCObjectPointerType(), clang::CodeGen::CodeGenModule::getTarget(), clang::ObjCInterfaceDecl::getTypeForDecl(), clang::CodeGen::CodeGenModule::getTypes(), clang::ObjCIvarDecl::getUsageType(), clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::FieldDecl::isBitField(), clang::ASTContext::lookupFieldBitOffset(), clang::CodeGen::LValue::MakeBitfield(), clang::CodeGen::CGBitFieldInfo::MakeInfo(), clang::CodeGen::CodeGenFunction::MakeNaturalAlignRawAddrLValue(), clang::CodeGen::CGBitFieldInfo::StorageSize, clang::ASTContext::toBits(), clang::ASTContext::toCharUnitsFromBits(), V, and clang::QualType::withCVRQualifiers().
|
pure virtual |
EnumerationMutationFunction - Return the function that's called by the compiler when a mutation is detected during foreach iteration.
|
pure virtual |
Generate a category.
A category contains a list of methods (and accompanying metadata) and a list of protocols.
|
pure virtual |
Generate a class structure for this class.
|
pure virtual |
Generate a constant string object.
Referenced by emitConstantObjCStringLiteral().
|
pure virtual |
Generates prologue for direct Objective-C Methods.
|
pure virtual |
Generate an Objective-C message send operation.
Method | - The method being called, this may be null if synthesizing a property setter or getter. |
Referenced by GeneratePossiblySpecializedMessageSend().
|
pure virtual |
Generate an Objective-C message send operation to the super class initiated in a method for Class and with the given Self object.
Method | - The method being called, this may be null if synthesizing a property setter or getter. |
|
pure virtual |
Generate a function preamble for a method with the specified types.
CodeGen::RValue CGObjCRuntime::GeneratePossiblySpecializedMessageSend | ( | CodeGenFunction & | CGF, |
ReturnValueSlot | Return, | ||
QualType | ResultType, | ||
Selector | Sel, | ||
llvm::Value * | Receiver, | ||
const CallArgList & | Args, | ||
const ObjCInterfaceDecl * | OID, | ||
const ObjCMethodDecl * | Method, | ||
bool | isClassMessage | ||
) |
Generate an Objective-C message send operation.
This variant allows for the call to be substituted with an optimized variant.
Definition at line 438 of file CGObjC.cpp.
References GenerateMessageSend(), clang::CodeGen::RValue::get(), and tryGenerateSpecializedMessageSend().
|
pure virtual |
Generate the named protocol.
Protocols contain method metadata but no implementations.
|
pure virtual |
Emit the code to return the named protocol as an object, as in a @protocol expression.
|
pure virtual |
Get the address of a selector for the specified name and type values.
This is a rarely-used language extension, but sadly it exists.
The result should have the LLVM type for a pointer to ASTContext::getObjCSelType().
|
inlinevirtual |
Definition at line 148 of file CGObjCRuntime.h.
Referenced by EmitTryCatchStmt().
|
pure virtual |
GetClass - Return a reference to the class for the given interface decl.
Referenced by tryEmitSpecializedAllocInit().
|
pure virtual |
API for atomic copying of qualified aggregates with non-trivial copy assignment (c++) in getter.
Referenced by emitCPPObjectAtomicGetterCall().
|
pure virtual |
API for atomic copying of qualified aggregates with non-trivial copy assignment (c++) in setter.
Referenced by emitCPPObjectAtomicSetterCall().
|
pure virtual |
Get the type constant to catch for the given ObjC pointer type.
This is used externally to implement catching ObjC types in C++. Runtimes which don't support this should add the appropriate error to Sema.
Referenced by EmitTryCatchStmt().
|
pure virtual |
Referenced by emitStructGetterCall().
CGObjCRuntime::MessageSendInfo CGObjCRuntime::getMessageSendInfo | ( | const ObjCMethodDecl * | method, |
QualType | resultType, | ||
CallArgList & | callArgs | ||
) |
Compute the pointer-to-function type to which a message send should be casted in order to correctly call the given method with the given arguments.
method | - may be null |
resultType | - the result type to use if there's no method |
callArgs | - the actual arguments, including implicit ones |
Definition at line 360 of file CGObjCRuntime.cpp.
References clang::CodeGen::CodeGenTypes::arrangeCall(), clang::CodeGen::CodeGenTypes::arrangeObjCMessageSendSignature(), clang::CodeGen::CodeGenTypes::arrangeUnprototypedObjCMessageSend(), CGM, clang::CodeGen::CodeGenModule::getDataLayout(), clang::CodeGen::CodeGenModule::getLLVMContext(), and clang::CodeGen::CodeGenModule::getTypes().
|
pure virtual |
Return the runtime function for optimized setting properties.
|
pure virtual |
GetOrEmitProtocol - Get the protocol object for the given declaration, emitting it if necessary.
The return value has type ProtocolPtrTy.
Referenced by clang::CodeGen::emitObjCProtocolObject().
|
pure virtual |
Return the runtime function for getting properties.
|
pure virtual |
Return the runtime function for setting properties.
|
inlinevirtual |
Definition at line 320 of file CGObjCRuntime.h.
Referenced by getBlockDescriptorName().
std::vector< const ObjCProtocolDecl * > CGObjCRuntime::GetRuntimeProtocolList | ( | ObjCProtocolDecl::protocol_iterator | begin, |
ObjCProtocolDecl::protocol_iterator | end | ||
) |
Walk the list of protocol references from a class, category or protocol to traverse the DAG formed from it's inheritance hierarchy.
Find the list of protocols that ends each walk at either a runtime protocol or a non-runtime protocol with no parents. For the common case of just a list of standard runtime protocols this just returns the same list that was passed in.
Definition at line 466 of file CGObjC.cpp.
References AppendFirstImpliedRuntimeProtocols().
|
pure virtual |
Get a typed selector.
|
pure virtual |
Get a selector for the specified name and type values.
The result should have the LLVM type for ASTContext::getObjCSelType().
|
pure virtual |
Referenced by emitStructSetterCall().
std::string CGObjCRuntime::getSymbolNameForMethod | ( | const ObjCMethodDecl * | method, |
bool | includeCategoryName = true |
||
) |
Definition at line 469 of file CGObjCRuntime.cpp.
References CGM, clang::CodeGen::CodeGenModule::getCXXABI(), clang::CodeGen::CGCXXABI::getMangleContext(), and clang::MangleContext::mangleObjCMethodName().
|
static |
Definition at line 420 of file CGObjCRuntime.cpp.
Referenced by canMessageReceiverBeNull().
|
pure virtual |
Generate the function required to register all Objective-C components in this compilation unit with the runtime library.
|
pure virtual |
Register an class alias.
|
protected |
Definition at line 67 of file CGObjCRuntime.h.
Referenced by ComputeBitfieldBitOffset(), ComputeIvarBaseOffset(), EmitTryCatchStmt(), getMessageSendInfo(), and getSymbolNameForMethod().