clang 22.0.0git
clang::CodeGen::CGObjCRuntime Class Referenceabstract

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::CodeGenModuleCGM

Detailed Description

Implements runtime-specific code generation functions.

Definition at line 65 of file CGObjCRuntime.h.

Constructor & Destructor Documentation

◆ CGObjCRuntime()

clang::CodeGen::CGObjCRuntime::CGObjCRuntime ( CodeGen::CodeGenModule & CGM)
inlineprotected

Definition at line 68 of file CGObjCRuntime.h.

References CGM.

◆ ~CGObjCRuntime()

CGObjCRuntime::~CGObjCRuntime ( )
virtual

Definition at line 4129 of file CGObjC.cpp.

Member Function Documentation

◆ BuildByrefLayout()

virtual llvm::Constant * clang::CodeGen::CGObjCRuntime::BuildByrefLayout ( CodeGen::CodeGenModule & CGM,
QualType T )
pure virtual

Returns an i8* which points to the byref layout information.

References CGM, and clang::T.

◆ BuildGCBlockLayout()

virtual llvm::Constant * clang::CodeGen::CGObjCRuntime::BuildGCBlockLayout ( CodeGen::CodeGenModule & CGM,
const CodeGen::CGBlockInfo & blockInfo )
pure virtual

References CGM.

Referenced by buildBlockDescriptor().

◆ BuildRCBlockLayout()

virtual llvm::Constant * clang::CodeGen::CGObjCRuntime::BuildRCBlockLayout ( CodeGen::CodeGenModule & CGM,
const CodeGen::CGBlockInfo & blockInfo )
pure virtual

References CGM.

Referenced by buildBlockDescriptor().

◆ canMessageReceiverBeNull()

bool CGObjCRuntime::canMessageReceiverBeNull ( CodeGenFunction & CGF,
const ObjCMethodDecl * method,
bool isSuper,
const ObjCInterfaceDecl * classReceiver,
llvm::Value * receiver )

◆ ComputeBitfieldBitOffset()

unsigned CGObjCRuntime::ComputeBitfieldBitOffset ( CodeGen::CodeGenModule & CGM,
const ObjCInterfaceDecl * ID,
const ObjCIvarDecl * Ivar )

Definition at line 45 of file CGObjCRuntime.cpp.

References CGM.

◆ ComputeIvarBaseOffset() [1/2]

uint64_t CGObjCRuntime::ComputeIvarBaseOffset ( CodeGen::CodeGenModule & CGM,
const ObjCImplementationDecl * OID,
const ObjCIvarDecl * Ivar )
protected

Definition at line 38 of file CGObjCRuntime.cpp.

References CGM, and clang::ObjCImplDecl::getClassInterface().

◆ ComputeIvarBaseOffset() [2/2]

uint64_t CGObjCRuntime::ComputeIvarBaseOffset ( CodeGen::CodeGenModule & CGM,
const ObjCInterfaceDecl * OID,
const ObjCIvarDecl * Ivar )
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.

◆ destroyCalleeDestroyedArguments()

void CGObjCRuntime::destroyCalleeDestroyedArguments ( CodeGenFunction & CGF,
const ObjCMethodDecl * method,
const CallArgList & callArgs )
static

◆ EmitAtSynchronizedStmt()

void CGObjCRuntime::EmitAtSynchronizedStmt ( CodeGenFunction & CGF,
const ObjCAtSynchronizedStmt & S,
llvm::FunctionCallee syncEnterFn,
llvm::FunctionCallee syncExitFn )
protected

◆ EmitGCMemmoveCollectable()

virtual void clang::CodeGen::CGObjCRuntime::EmitGCMemmoveCollectable ( CodeGen::CodeGenFunction & CGF,
Address DestPtr,
Address SrcPtr,
llvm::Value * Size )
pure virtual

◆ EmitInitOfCatchParam()

◆ EmitIvarOffset()

virtual llvm::Value * clang::CodeGen::CGObjCRuntime::EmitIvarOffset ( CodeGen::CodeGenFunction & CGF,
const ObjCInterfaceDecl * Interface,
const ObjCIvarDecl * Ivar )
pure virtual

References clang::Interface.

◆ EmitNSAutoreleasePoolClassRef()

virtual llvm::Value * clang::CodeGen::CGObjCRuntime::EmitNSAutoreleasePoolClassRef ( CodeGenFunction & CGF)
inlinevirtual

◆ EmitObjCGlobalAssign()

virtual void clang::CodeGen::CGObjCRuntime::EmitObjCGlobalAssign ( CodeGen::CodeGenFunction & CGF,
llvm::Value * src,
Address dest,
bool threadlocal = false )
pure virtual

Referenced by EmitDeclInit().

◆ EmitObjCIvarAssign()

virtual void clang::CodeGen::CGObjCRuntime::EmitObjCIvarAssign ( CodeGen::CodeGenFunction & CGF,
llvm::Value * src,
Address dest,
llvm::Value * ivarOffset )
pure virtual

◆ EmitObjCStrongCastAssign()

virtual void clang::CodeGen::CGObjCRuntime::EmitObjCStrongCastAssign ( CodeGen::CodeGenFunction & CGF,
llvm::Value * src,
Address dest )
pure virtual

◆ EmitObjCValueForIvar()

virtual LValue clang::CodeGen::CGObjCRuntime::EmitObjCValueForIvar ( CodeGen::CodeGenFunction & CGF,
QualType ObjectTy,
llvm::Value * BaseValue,
const ObjCIvarDecl * Ivar,
unsigned CVRQualifiers )
pure virtual

◆ EmitObjCWeakAssign()

virtual void clang::CodeGen::CGObjCRuntime::EmitObjCWeakAssign ( CodeGen::CodeGenFunction & CGF,
llvm::Value * src,
Address dest )
pure virtual

Referenced by EmitDeclInit().

◆ EmitObjCWeakRead()

virtual llvm::Value * clang::CodeGen::CGObjCRuntime::EmitObjCWeakRead ( CodeGen::CodeGenFunction & CGF,
Address AddrWeakObj )
pure virtual

◆ EmitSynchronizedStmt()

virtual void clang::CodeGen::CGObjCRuntime::EmitSynchronizedStmt ( CodeGen::CodeGenFunction & CGF,
const ObjCAtSynchronizedStmt & S )
pure virtual

◆ EmitThrowStmt()

virtual void clang::CodeGen::CGObjCRuntime::EmitThrowStmt ( CodeGen::CodeGenFunction & CGF,
const ObjCAtThrowStmt & S,
bool ClearInsertionPoint = true )
pure virtual

◆ EmitTryCatchStmt()

void CGObjCRuntime::EmitTryCatchStmt ( CodeGenFunction & CGF,
const ObjCAtTryStmt & S,
llvm::FunctionCallee beginCatchFn,
llvm::FunctionCallee endCatchFn,
llvm::FunctionCallee exceptionRethrowFn )
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 140 of file CGObjCRuntime.cpp.

References clang::CodeGen::CodeGenFunction::Builder, clang::cast(), clang::ObjCAtTryStmt::catch_stmts(), 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, 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::ObjCAtTryStmt::getFinallyStmt(), clang::CodeGen::CodeGenFunction::getJumpDestInCurrentScope(), clang::ObjCAtTryStmt::getNumCatchStmts(), clang::ObjCAtTryStmt::getTryBody(), 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().

◆ EmitTryStmt()

virtual void clang::CodeGen::CGObjCRuntime::EmitTryStmt ( CodeGen::CodeGenFunction & CGF,
const ObjCAtTryStmt & S )
pure virtual

◆ EmitValueForIvarAtOffset()

◆ EnumerationMutationFunction()

virtual llvm::FunctionCallee clang::CodeGen::CGObjCRuntime::EnumerationMutationFunction ( )
pure virtual

EnumerationMutationFunction - Return the function that's called by the compiler when a mutation is detected during foreach iteration.

◆ GenerateCategory()

virtual void clang::CodeGen::CGObjCRuntime::GenerateCategory ( const ObjCCategoryImplDecl * OCD)
pure virtual

Generate a category.

A category contains a list of methods (and accompanying metadata) and a list of protocols.

◆ GenerateClass()

virtual void clang::CodeGen::CGObjCRuntime::GenerateClass ( const ObjCImplementationDecl * OID)
pure virtual

Generate a class structure for this class.

◆ GenerateConstantString()

virtual ConstantAddress clang::CodeGen::CGObjCRuntime::GenerateConstantString ( const StringLiteral * )
pure virtual

Generate a constant string object.

Referenced by emitConstantObjCStringLiteral().

◆ GenerateDirectMethodPrologue()

virtual void clang::CodeGen::CGObjCRuntime::GenerateDirectMethodPrologue ( CodeGenFunction & CGF,
llvm::Function * Fn,
const ObjCMethodDecl * OMD,
const ObjCContainerDecl * CD )
pure virtual

Generates prologue for direct Objective-C Methods.

◆ GenerateMessageSend()

virtual CodeGen::RValue clang::CodeGen::CGObjCRuntime::GenerateMessageSend ( CodeGen::CodeGenFunction & CGF,
ReturnValueSlot ReturnSlot,
QualType ResultType,
Selector Sel,
llvm::Value * Receiver,
const CallArgList & CallArgs,
const ObjCInterfaceDecl * Class = nullptr,
const ObjCMethodDecl * Method = nullptr )
pure virtual

◆ GenerateMessageSendSuper()

virtual CodeGen::RValue clang::CodeGen::CGObjCRuntime::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 )
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.

Parameters
Method- The method being called, this may be null if synthesizing a property setter or getter.

References clang::Class, clang::Method, and clang::Self.

Referenced by clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr().

◆ GenerateMethod()

virtual llvm::Function * clang::CodeGen::CGObjCRuntime::GenerateMethod ( const ObjCMethodDecl * OMD,
const ObjCContainerDecl * CD )
pure virtual

Generate a function preamble for a method with the specified types.

◆ GeneratePossiblySpecializedMessageSend()

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(), clang::Method, and tryGenerateSpecializedMessageSend().

Referenced by clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr().

◆ GenerateProtocol()

virtual void clang::CodeGen::CGObjCRuntime::GenerateProtocol ( const ObjCProtocolDecl * OPD)
pure virtual

Generate the named protocol.

Protocols contain method metadata but no implementations.

◆ GenerateProtocolRef()

virtual llvm::Value * clang::CodeGen::CGObjCRuntime::GenerateProtocolRef ( CodeGenFunction & CGF,
const ObjCProtocolDecl * OPD )
pure virtual

Emit the code to return the named protocol as an object, as in a @protocol expression.

◆ GetAddrOfSelector()

virtual Address clang::CodeGen::CGObjCRuntime::GetAddrOfSelector ( CodeGenFunction & CGF,
Selector Sel )
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().

◆ getCatchAllTypeInfo()

virtual CatchTypeInfo clang::CodeGen::CGObjCRuntime::getCatchAllTypeInfo ( )
inlinevirtual

Definition at line 147 of file CGObjCRuntime.h.

Referenced by EmitTryCatchStmt().

◆ GetClass()

virtual llvm::Value * clang::CodeGen::CGObjCRuntime::GetClass ( CodeGenFunction & CGF,
const ObjCInterfaceDecl * OID )
pure virtual

◆ GetCppAtomicObjectGetFunction()

virtual llvm::FunctionCallee clang::CodeGen::CGObjCRuntime::GetCppAtomicObjectGetFunction ( )
pure virtual

API for atomic copying of qualified aggregates with non-trivial copy assignment (c++) in getter.

Referenced by emitCPPObjectAtomicGetterCall().

◆ GetCppAtomicObjectSetFunction()

virtual llvm::FunctionCallee clang::CodeGen::CGObjCRuntime::GetCppAtomicObjectSetFunction ( )
pure virtual

API for atomic copying of qualified aggregates with non-trivial copy assignment (c++) in setter.

Referenced by emitCPPObjectAtomicSetterCall().

◆ GetEHType()

virtual llvm::Constant * clang::CodeGen::CGObjCRuntime::GetEHType ( QualType T)
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.

References clang::T.

Referenced by EmitTryCatchStmt().

◆ GetGetStructFunction()

virtual llvm::FunctionCallee clang::CodeGen::CGObjCRuntime::GetGetStructFunction ( )
pure virtual

Referenced by emitStructGetterCall().

◆ getMessageSendInfo()

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.

Parameters
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 359 of file CGObjCRuntime.cpp.

References CGM.

◆ GetOptimizedPropertySetFunction()

virtual llvm::FunctionCallee clang::CodeGen::CGObjCRuntime::GetOptimizedPropertySetFunction ( bool atomic,
bool copy )
pure virtual

Return the runtime function for optimized setting properties.

◆ GetOrEmitProtocol()

virtual llvm::Constant * clang::CodeGen::CGObjCRuntime::GetOrEmitProtocol ( const ObjCProtocolDecl * PD)
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().

◆ GetPropertyGetFunction()

virtual llvm::FunctionCallee clang::CodeGen::CGObjCRuntime::GetPropertyGetFunction ( )
pure virtual

Return the runtime function for getting properties.

◆ GetPropertySetFunction()

virtual llvm::FunctionCallee clang::CodeGen::CGObjCRuntime::GetPropertySetFunction ( )
pure virtual

Return the runtime function for setting properties.

◆ getRCBlockLayoutStr()

virtual std::string clang::CodeGen::CGObjCRuntime::getRCBlockLayoutStr ( CodeGen::CodeGenModule & CGM,
const CGBlockInfo & blockInfo )
inlinevirtual

Definition at line 304 of file CGObjCRuntime.h.

References CGM.

Referenced by getBlockDescriptorName().

◆ GetRuntimeProtocolList()

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().

◆ GetSelector() [1/2]

virtual llvm::Value * clang::CodeGen::CGObjCRuntime::GetSelector ( CodeGenFunction & CGF,
const ObjCMethodDecl * Method )
pure virtual

Get a typed selector.

References clang::Method.

◆ GetSelector() [2/2]

virtual llvm::Value * clang::CodeGen::CGObjCRuntime::GetSelector ( CodeGenFunction & CGF,
Selector Sel )
pure virtual

Get a selector for the specified name and type values.

The result should have the LLVM type for ASTContext::getObjCSelType().

◆ GetSetStructFunction()

virtual llvm::FunctionCallee clang::CodeGen::CGObjCRuntime::GetSetStructFunction ( )
pure virtual

Referenced by emitStructSetterCall().

◆ getSymbolNameForMethod()

std::string CGObjCRuntime::getSymbolNameForMethod ( const ObjCMethodDecl * method,
bool includeCategoryName = true )

Definition at line 468 of file CGObjCRuntime.cpp.

References CGM, and clang::out.

◆ isWeakLinkedClass()

bool CGObjCRuntime::isWeakLinkedClass ( const ObjCInterfaceDecl * cls)
static

Definition at line 419 of file CGObjCRuntime.cpp.

Referenced by canMessageReceiverBeNull().

◆ ModuleInitFunction()

virtual llvm::Function * clang::CodeGen::CGObjCRuntime::ModuleInitFunction ( )
pure virtual

Generate the function required to register all Objective-C components in this compilation unit with the runtime library.

◆ RegisterAlias()

virtual void clang::CodeGen::CGObjCRuntime::RegisterAlias ( const ObjCCompatibleAliasDecl * OAD)
pure virtual

Register an class alias.

Member Data Documentation

◆ CGM


The documentation for this class was generated from the following files: