clang 17.0.0git
Namespaces | Classes | Typedefs | Enumerations | Functions
clang::CodeGen Namespace Reference

Namespaces

namespace  swiftcall
 

Classes

class  ABIArgInfo
 ABIArgInfo - Helper class to encapsulate information about how a specific C type should be passed to or returned from a function. More...
 
class  ABIInfo
 ABIInfo - Target specific hooks for defining how a type should be passed or returned from functions. More...
 
class  Address
 An aligned address. More...
 
class  AggValueSlot
 An aggregate value slot. More...
 
class  ApplyDebugLocation
 A scoped helper to set the current debug location to the specified location or preferred location of the specified Expr. More...
 
class  ApplyInlineDebugLocation
 A scoped helper to set the current debug location to an inlined location. More...
 
class  BlockByrefHelpers
 A pair of helper functions for a __block variable. More...
 
class  BlockByrefInfo
 Information about the layout of a __block variable. More...
 
class  BlockFieldFlags
 
class  BlockFlags
 
struct  BranchFixup
 A branch fixup. More...
 
struct  CallArg
 
class  CallArgList
 CallArgList - Type for representing both the value and type of arguments in a call. More...
 
struct  CatchRetScope
 
struct  CatchTypeInfo
 The MS C++ ABI needs a pointer to RTTI data plus some flags to describe the type of a catch handler, so we use this wrapper. More...
 
struct  CGBitFieldInfo
 Structure with information about how a bitfield should be accessed. More...
 
class  CGBlockInfo
 CGBlockInfo - Information to generate a block literal. More...
 
class  CGBuilderInserter
 This is an IRBuilder insertion helper that forwards to CodeGenFunction::InsertHelper, which adds necessary metadata to instructions. More...
 
class  CGBuilderTy
 
class  CGCallee
 All available information about a concrete callee. More...
 
class  CGCalleeInfo
 Abstract information about a function or function prototype. More...
 
struct  CGCoroData
 
class  CGCUDARuntime
 
class  CGCXXABI
 Implements C++ ABI-specific code generation functions. More...
 
class  CGDebugInfo
 This class gathers all debug information during compilation and is responsible for emitting to llvm globals or pass directly to the backend. More...
 
class  CGFunctionInfo
 CGFunctionInfo - Class to encapsulate the information about a function definition. More...
 
struct  CGFunctionInfoArgInfo
 
class  CGHLSLRuntime
 
class  CGObjCRuntime
 Implements runtime-specific code generation functions. More...
 
class  CGOpenCLRuntime
 
class  CGOpenMPRuntime
 
class  CGOpenMPRuntimeGPU
 
class  CGOpenMPSIMDRuntime
 Class supports emissionof SIMD-only code. More...
 
class  CGRecordLayout
 CGRecordLayout - This class handles struct and union layout info while lowering AST types to LLVM types. More...
 
class  CodeGenFunction
 CodeGenFunction - This class organizes the per-function state that is used while generating LLVM code. More...
 
class  CodeGenModule
 This class organizes the cross-function state that is used while generating LLVM code. More...
 
class  CodeGenPGO
 Per-function PGO state. More...
 
class  CodeGenTBAA
 CodeGenTBAA - This class organizes the cross-module state that is used while lowering AST types to LLVM types. More...
 
struct  CodeGenTypeCache
 This structure provides a set of types that are commonly used during IR emission. More...
 
class  CodeGenTypes
 This class organizes the cross-module state that is used while lowering AST types to LLVM types. More...
 
class  CodeGenVTables
 
class  ConstantAddress
 A specialization of Address that requires the address to be an LLVM Constant. More...
 
class  ConstantAggregateBuilderBase
 A concrete base class for struct and array aggregate initializer builders. More...
 
class  ConstantAggregateBuilderTemplateBase
 
class  ConstantArrayBuilder
 A helper class of ConstantInitBuilder, used for building constant array initializers. More...
 
class  ConstantArrayBuilderTemplateBase
 
class  ConstantEmitter
 
class  ConstantInitBuilder
 The standard implementation of ConstantInitBuilder used in Clang. More...
 
class  ConstantInitBuilderBase
 A convenience builder class for complex constant initializers, especially for anonymous global structures used by various language runtimes. More...
 
class  ConstantInitBuilderTemplateBase
 A template class designed to allow other frontends to easily customize the builder classes used by ConstantInitBuilder, and thus to extend the API to work with the abstractions they prefer. More...
 
struct  ConstantInitBuilderTraits
 
class  ConstantInitFuture
 A "future" for a completed constant initializer, which can be passed around independently of any sub-builders (but not the original parent). More...
 
class  ConstantStructBuilder
 A helper class of ConstantInitBuilder, used for building constant struct initializers. More...
 
class  ConstantStructBuilderTemplateBase
 A template class designed to allow other frontends to easily customize the builder classes used by ConstantInitBuilder, and thus to extend the API to work with the abstractions they prefer. More...
 
class  CoverageMappingGen
 Organizes the per-function state that is used while generating code coverage mapping data. More...
 
class  CoverageMappingModuleGen
 Organizes the cross-function state that is used while generating code coverage mapping data. More...
 
struct  DominatingLLVMValue
 Helper class with most of the code for saving a value for a conditional expression cleanup. More...
 
struct  DominatingPointer
 
struct  DominatingPointer< T, false >
 
struct  DominatingPointer< T, true >
 A partial specialization of DominatingValue for llvm::Values that might be llvm::Instructions. More...
 
struct  DominatingValue
 A metaprogramming class for ensuring that a value will dominate an arbitrary position in a function. More...
 
struct  DominatingValue< Address >
 A specialization of DominatingValue for Address. More...
 
struct  DominatingValue< RValue >
 A specialization of DominatingValue for RValue. More...
 
struct  DominatingValue< T * >
 
class  EHCatchScope
 A scope which attempts to handle some, possibly all, types of exceptions. More...
 
class  EHCleanupScope
 A cleanup scope which generates the cleanup blocks lazily. More...
 
class  EHFilterScope
 An exceptions scope which filters exceptions thrown through it. More...
 
struct  EHPersonality
 The exceptions personality for a function. More...
 
class  EHScope
 A protected scope for zero-cost EH handling. More...
 
class  EHScopeStack
 A stack of scopes which respond to exceptions, including cleanups and catch blocks. More...
 
class  EHTerminateScope
 An exceptions scope which calls std::terminate if any exception reaches it. More...
 
class  FunctionArgList
 FunctionArgList - Type for representing both the decl and type of parameters to a function. More...
 
struct  ImplicitCXXConstructorArgs
 Additional implicit arguments to add to a constructor argument list. More...
 
class  InstrProfStats
 This class records statistics on instrumentation based profiling. More...
 
struct  InvariantValue
 
struct  LoopAttributes
 Attributes that may be specified on loops. More...
 
class  LoopInfo
 Information used when generating a structured loop. More...
 
class  LoopInfoStack
 A stack of loop information corresponding to loop nesting levels. More...
 
class  LValue
 LValue - This represents an lvalue references. More...
 
class  LValueBaseInfo
 
struct  ObjCEntrypoints
 
struct  OMPTaskDataTy
 
struct  OrderGlobalInitsOrStermFinalizers
 
class  PrePostActionTy
 A basic class for pre|post-action for advanced codegen sequence for OpenMP region. More...
 
class  ReductionCodeGen
 Class intended to support codegen of all kind of the reduction clauses. More...
 
class  RegionCodeGenTy
 Class provides a way to call simple version of codegen for OpenMP region, or an advanced with possible pre|post-actions in codegen. More...
 
class  RequiredArgs
 A class for recording the number of arguments that a function signature requires. More...
 
class  ReturnValueSlot
 ReturnValueSlot - Contains the address where the return value of a function can be stored, and whether the address is volatile or not. More...
 
class  RValue
 RValue - This trivial value class is used to represent the result of an expression that is evaluated. More...
 
class  SanitizerMetadata
 
class  SwiftABIInfo
 Target specific hooks for defining how a type should be passed or returned from functions with one of the Swift calling conventions. More...
 
class  TargetCodeGenInfo
 TargetCodeGenInfo - This class organizes various target-specific codegeneration issues, like target-specific attributes, builtins and so on. More...
 
struct  TBAAAccessInfo
 
class  VarBypassDetector
 The class detects jumps which bypass local variables declaration: goto L; int a; L: More...
 

Typedefs

typedef CGBuilderInserter CGBuilderInserterTy
 
typedef llvm::IRBuilder< llvm::ConstantFolder, CGBuilderInserterTyCGBuilderBaseTy
 

Enumerations

enum  KnownNonNull_t { NotKnownNonNull , KnownNonNull }
 
enum  BlockByrefFlags {
  BLOCK_BYREF_HAS_COPY_DISPOSE = (1 << 25) , BLOCK_BYREF_LAYOUT_MASK = (0xF << 28) , BLOCK_BYREF_LAYOUT_EXTENDED = (1 << 28) , BLOCK_BYREF_LAYOUT_NON_OBJECT = (2 << 28) ,
  BLOCK_BYREF_LAYOUT_STRONG = (3 << 28) , BLOCK_BYREF_LAYOUT_WEAK = (4 << 28) , BLOCK_BYREF_LAYOUT_UNRETAINED = (5 << 28)
}
 
enum  BlockLiteralFlags {
  BLOCK_IS_NOESCAPE = (1 << 23) , BLOCK_HAS_COPY_DISPOSE = (1 << 25) , BLOCK_HAS_CXX_OBJ = (1 << 26) , BLOCK_IS_GLOBAL = (1 << 28) ,
  BLOCK_USE_STRET = (1 << 29) , BLOCK_HAS_SIGNATURE = (1 << 30) , BLOCK_HAS_EXTENDED_LAYOUT = (1u << 31)
}
 
enum  BlockFieldFlag_t {
  BLOCK_FIELD_IS_OBJECT = 0x03 , BLOCK_FIELD_IS_BLOCK = 0x07 , BLOCK_FIELD_IS_BYREF = 0x08 , BLOCK_FIELD_IS_WEAK = 0x10 ,
  BLOCK_FIELD_IS_ARC = 0x40 , BLOCK_BYREF_CALLER = 128 , BLOCK_BYREF_CURRENT_MAX = 256
}
 
enum class  BlockCaptureEntityKind {
  None , CXXRecord , ARCWeak , ARCStrong ,
  NonTrivialCStruct , BlockObject
}
 Represents a type of copy/destroy operation that should be performed for an entity that's captured by a block. More...
 
enum  ARCPreciseLifetime_t { ARCImpreciseLifetime , ARCPreciseLifetime }
 Does an ARC strong l-value have precise lifetime? More...
 
enum class  AlignmentSource { Decl , AttributedType , Type }
 The source of the alignment of an l-value; an expression of confidence in the alignment actually matching the estimate. More...
 
enum  TypeEvaluationKind { TEK_Scalar , TEK_Complex , TEK_Aggregate }
 The kind of evaluation to perform on values of a particular type. More...
 
enum  SanitizerHandler { LIST_SANITIZER_CHECKS }
 
enum  ForDefinition_t : bool { NotForDefinition = false , ForDefinition = true }
 
enum class  TBAAAccessKind : unsigned { Ordinary , MayAlias , Incomplete }
 
enum  CleanupKind : unsigned {
  EHCleanup = 0x1 , NormalCleanup = 0x2 , NormalAndEHCleanup = EHCleanup | NormalCleanup , LifetimeMarker = 0x8 ,
  NormalEHLifetimeMarker = LifetimeMarker | NormalAndEHCleanup
}
 

Functions

const CGFunctionInfoarrangeObjCMessageSendSignature (CodeGenModule &CGM, const ObjCMethodDecl *MD, QualType receiverType)
 
const CGFunctionInfoarrangeFreeFunctionType (CodeGenModule &CGM, CanQual< FunctionProtoType > Ty)
 
const CGFunctionInfoarrangeFreeFunctionType (CodeGenModule &CGM, CanQual< FunctionNoProtoType > Ty)
 
const CGFunctionInfoarrangeCXXMethodType (CodeGenModule &CGM, const CXXRecordDecl *RD, const FunctionProtoType *FTP, const CXXMethodDecl *MD)
 
const CGFunctionInfoarrangeFreeFunctionCall (CodeGenModule &CGM, CanQualType returnType, ArrayRef< CanQualType > argTypes, FunctionType::ExtInfo info, RequiredArgs args)
 
ImplicitCXXConstructorArgs getImplicitCXXConstructorArgs (CodeGenModule &CGM, const CXXConstructorDecl *D)
 Returns the implicit arguments to add to a complete, non-delegating C++ constructor call.
 
llvm::Value * getCXXDestructorImplicitParam (CodeGenModule &CGM, llvm::BasicBlock *InsertBlock, llvm::BasicBlock::iterator InsertPoint, const CXXDestructorDecl *D, CXXDtorType Type, bool ForVirtualBase, bool Delegating)
 
llvm::FunctionType * convertFreeFunctionType (CodeGenModule &CGM, const FunctionDecl *FD)
 Returns null if the function type is incomplete and can't be lowered.
 
llvm::Type * convertTypeForMemory (CodeGenModule &CGM, QualType T)
 
unsigned getLLVMFieldNumber (CodeGenModule &CGM, const RecordDecl *RD, const FieldDecl *FD)
 Given a non-bitfield struct field, return its index within the elements of the struct's converted type.
 
void addDefaultFunctionDefinitionAttributes (CodeGenModule &CGM, llvm::AttrBuilder &attrs)
 Given the language and code-generation options that Clang was configured with, set the default LLVM IR attributes for a function definition.
 
llvm::Function * getNonTrivialCStructDefaultConstructor (CodeGenModule &GCM, CharUnits DstAlignment, bool IsVolatile, QualType QT)
 Returns the default constructor for a C struct with non-trivially copyable fields, generating it if necessary.
 
llvm::Function * getNonTrivialCStructCopyConstructor (CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment, bool IsVolatile, QualType QT)
 Returns the copy constructor for a C struct with non-trivially copyable fields, generating it if necessary.
 
llvm::Function * getNonTrivialCStructMoveConstructor (CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment, bool IsVolatile, QualType QT)
 Returns the move constructor for a C struct with non-trivially copyable fields, generating it if necessary.
 
llvm::Function * getNonTrivialCStructCopyAssignmentOperator (CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment, bool IsVolatile, QualType QT)
 Returns the copy assignment operator for a C struct with non-trivially copyable fields, generating it if necessary.
 
llvm::Function * getNonTrivialCStructMoveAssignmentOperator (CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment, bool IsVolatile, QualType QT)
 Return the move assignment operator for a C struct with non-trivially copyable fields, generating it if necessary.
 
llvm::Function * getNonTrivialCStructDestructor (CodeGenModule &CGM, CharUnits DstAlignment, bool IsVolatile, QualType QT)
 Returns the destructor for a C struct with non-trivially copyable fields, generating it if necessary.
 
llvm::Constant * emitObjCProtocolObject (CodeGenModule &CGM, const ObjCProtocolDecl *p)
 Get a pointer to a protocol object for the given declaration, emitting it if it hasn't already been emitted in this translation unit.
 
BlockFlags operator| (BlockLiteralFlags l, BlockLiteralFlags r)
 
BlockFieldFlags operator| (BlockFieldFlag_t l, BlockFieldFlag_t r)
 
void computeSPIRKernelABIInfo (CodeGenModule &CGM, CGFunctionInfo &FI)
 
CGCUDARuntimeCreateNVCUDARuntime (CodeGenModule &CGM)
 Creates an instance of a CUDA runtime class.
 
CGCXXABICreateItaniumCXXABI (CodeGenModule &CGM)
 Creates an Itanium-family ABI.
 
CGCXXABICreateMicrosoftCXXABI (CodeGenModule &CGM)
 Creates a Microsoft-family ABI.
 
CGObjCRuntimeCreateGNUObjCRuntime (CodeGenModule &CGM)
 Creates an instance of an Objective-C runtime class.
 
CGObjCRuntimeCreateMacObjCRuntime (CodeGenModule &CGM)
 
static AlignmentSource getFieldAlignmentSource (AlignmentSource Source)
 Given that the base address has the given alignment source, what's our confidence in the alignment of the field?
 
llvm::Constant * initializationPatternFor (CodeGenModule &, llvm::Type *)
 

Typedef Documentation

◆ CGBuilderBaseTy

typedef llvm::IRBuilder<llvm::ConstantFolder, CGBuilderInserterTy> clang::CodeGen::CGBuilderBaseTy

Definition at line 43 of file CGBuilder.h.

◆ CGBuilderInserterTy

Definition at line 40 of file CGBuilder.h.

Enumeration Type Documentation

◆ AlignmentSource

The source of the alignment of an l-value; an expression of confidence in the alignment actually matching the estimate.

Enumerator
Decl 

The l-value was an access to a declared entity or something equivalently strong, like the address of an array allocated by a language runtime.

AttributedType 

The l-value was considered opaque, so the alignment was determined from a type, but that type was an explicitly-aligned typedef.

Type 

The l-value was considered opaque, so the alignment was determined from a type.

Definition at line 130 of file CGValue.h.

◆ ARCPreciseLifetime_t

Does an ARC strong l-value have precise lifetime?

Enumerator
ARCImpreciseLifetime 
ARCPreciseLifetime 

Definition at line 124 of file CGValue.h.

◆ BlockByrefFlags

Enumerator
BLOCK_BYREF_HAS_COPY_DISPOSE 
BLOCK_BYREF_LAYOUT_MASK 
BLOCK_BYREF_LAYOUT_EXTENDED 
BLOCK_BYREF_LAYOUT_NON_OBJECT 
BLOCK_BYREF_LAYOUT_STRONG 
BLOCK_BYREF_LAYOUT_WEAK 
BLOCK_BYREF_LAYOUT_UNRETAINED 

Definition at line 38 of file CGBlocks.h.

◆ BlockCaptureEntityKind

Represents a type of copy/destroy operation that should be performed for an entity that's captured by a block.

Enumerator
None 
CXXRecord 
ARCWeak 
ARCStrong 
NonTrivialCStruct 
BlockObject 

Definition at line 146 of file CGBlocks.h.

◆ BlockFieldFlag_t

Enumerator
BLOCK_FIELD_IS_OBJECT 
BLOCK_FIELD_IS_BLOCK 
BLOCK_FIELD_IS_BYREF 
BLOCK_FIELD_IS_WEAK 
BLOCK_FIELD_IS_ARC 
BLOCK_BYREF_CALLER 
BLOCK_BYREF_CURRENT_MAX 

Definition at line 87 of file CGBlocks.h.

◆ BlockLiteralFlags

Enumerator
BLOCK_IS_NOESCAPE 
BLOCK_HAS_COPY_DISPOSE 
BLOCK_HAS_CXX_OBJ 
BLOCK_IS_GLOBAL 
BLOCK_USE_STRET 
BLOCK_HAS_SIGNATURE 
BLOCK_HAS_EXTENDED_LAYOUT 

Definition at line 48 of file CGBlocks.h.

◆ CleanupKind

Enumerator
EHCleanup 

Denotes a cleanup that should run when a scope is exited using exceptional control flow (a throw statement leading to stack unwinding, ).

NormalCleanup 

Denotes a cleanup that should run when a scope is exited using normal control flow (falling off the end of the scope, return, goto, ...).

NormalAndEHCleanup 
LifetimeMarker 
NormalEHLifetimeMarker 

Definition at line 77 of file EHScopeStack.h.

◆ ForDefinition_t

Enumerator
NotForDefinition 
ForDefinition 

Definition at line 97 of file CodeGenModule.h.

◆ KnownNonNull_t

Enumerator
NotKnownNonNull 
KnownNonNull 

Definition at line 26 of file Address.h.

◆ SanitizerHandler

Enumerator
LIST_SANITIZER_CHECKS 

Definition at line 140 of file CodeGenFunction.h.

◆ TBAAAccessKind

Enumerator
Ordinary 
MayAlias 
Incomplete 

Definition at line 34 of file CodeGenTBAA.h.

◆ TypeEvaluationKind

The kind of evaluation to perform on values of a particular type.

Basically, is the code in CGExprScalar, CGExprComplex, or CGExprAgg?

TODO: should vectors maybe be split out into their own thing?

Enumerator
TEK_Scalar 
TEK_Complex 
TEK_Aggregate 

Definition at line 107 of file CodeGenFunction.h.

Function Documentation

◆ addDefaultFunctionDefinitionAttributes()

void clang::CodeGen::addDefaultFunctionDefinitionAttributes ( CodeGenModule CGM,
llvm::AttrBuilder &  attrs 
)

Given the language and code-generation options that Clang was configured with, set the default LLVM IR attributes for a function definition.

The attributes set here are mostly global target-configuration and pipeline-configuration options like the target CPU, variant stack rules, whether to optimize for size, and so on. This is useful for frontends (such as Swift) that generally intend to interoperate with C code and rely on Clang's target configuration logic.

As a general rule, this function assumes that meaningful attributes haven't already been added to the builder. It won't intentionally displace any existing attributes, but it also won't check to avoid overwriting them. Callers should generally apply customizations after making this call.

This function assumes that the caller is not defining a function that requires special no-builtin treatment.

Definition at line 30 of file CodeGenABITypes.cpp.

References clang::CodeGen::CodeGenModule::addDefaultFunctionDefinitionAttributes().

◆ arrangeCXXMethodType()

const CGFunctionInfo & clang::CodeGen::arrangeCXXMethodType ( CodeGenModule CGM,
const CXXRecordDecl RD,
const FunctionProtoType FTP,
const CXXMethodDecl MD 
)

◆ arrangeFreeFunctionCall()

const CGFunctionInfo & clang::CodeGen::arrangeFreeFunctionCall ( CodeGenModule CGM,
CanQualType  returnType,
ArrayRef< CanQualType argTypes,
FunctionType::ExtInfo  info,
RequiredArgs  args 
)

◆ arrangeFreeFunctionType() [1/2]

const CGFunctionInfo & clang::CodeGen::arrangeFreeFunctionType ( CodeGenModule CGM,
CanQual< FunctionNoProtoType Ty 
)

◆ arrangeFreeFunctionType() [2/2]

const CGFunctionInfo & clang::CodeGen::arrangeFreeFunctionType ( CodeGenModule CGM,
CanQual< FunctionProtoType Ty 
)

◆ arrangeObjCMessageSendSignature()

const CGFunctionInfo & clang::CodeGen::arrangeObjCMessageSendSignature ( CodeGenModule CGM,
const ObjCMethodDecl MD,
QualType  receiverType 
)

◆ computeSPIRKernelABIInfo()

void clang::CodeGen::computeSPIRKernelABIInfo ( CodeGenModule CGM,
CGFunctionInfo FI 
)

◆ convertFreeFunctionType()

llvm::FunctionType * clang::CodeGen::convertFreeFunctionType ( CodeGenModule CGM,
const FunctionDecl FD 
)

Returns null if the function type is incomplete and can't be lowered.

Definition at line 98 of file CodeGenABITypes.cpp.

References clang::CodeGen::CodeGenTypes::ConvertType(), clang::ValueDecl::getType(), and clang::CodeGen::CodeGenModule::getTypes().

◆ convertTypeForMemory()

llvm::Type * clang::CodeGen::convertTypeForMemory ( CodeGenModule CGM,
QualType  T 
)

◆ CreateGNUObjCRuntime()

CGObjCRuntime * clang::CodeGen::CreateGNUObjCRuntime ( CodeGenModule CGM)

◆ CreateItaniumCXXABI()

CodeGen::CGCXXABI * clang::CodeGen::CreateItaniumCXXABI ( CodeGenModule CGM)

◆ CreateMacObjCRuntime()

CGObjCRuntime * clang::CodeGen::CreateMacObjCRuntime ( CodeGenModule CGM)

◆ CreateMicrosoftCXXABI()

CGCXXABI * clang::CodeGen::CreateMicrosoftCXXABI ( CodeGenModule CGM)

Creates a Microsoft-family ABI.

Definition at line 3559 of file MicrosoftCXXABI.cpp.

◆ CreateNVCUDARuntime()

CGCUDARuntime * clang::CodeGen::CreateNVCUDARuntime ( CodeGenModule CGM)

Creates an instance of a CUDA runtime class.

Definition at line 1013 of file CGCUDANV.cpp.

◆ emitObjCProtocolObject()

llvm::Constant * clang::CodeGen::emitObjCProtocolObject ( CodeGenModule CGM,
const ObjCProtocolDecl p 
)

Get a pointer to a protocol object for the given declaration, emitting it if it hasn't already been emitted in this translation unit.

Note that the ABI for emitting a protocol reference in code (e.g. for a protocol expression) in most runtimes is not as simple as just materializing a pointer to this object.

Definition at line 469 of file CGObjCRuntime.cpp.

References clang::CodeGen::CodeGenModule::getObjCRuntime(), and clang::CodeGen::CGObjCRuntime::GetOrEmitProtocol().

◆ getCXXDestructorImplicitParam()

llvm::Value * clang::CodeGen::getCXXDestructorImplicitParam ( CodeGenModule CGM,
llvm::BasicBlock *  InsertBlock,
llvm::BasicBlock::iterator  InsertPoint,
const CXXDestructorDecl D,
CXXDtorType  Type,
bool  ForVirtualBase,
bool  Delegating 
)

◆ getFieldAlignmentSource()

static AlignmentSource clang::CodeGen::getFieldAlignmentSource ( AlignmentSource  Source)
inlinestatic

Given that the base address has the given alignment source, what's our confidence in the alignment of the field?

Definition at line 148 of file CGValue.h.

References Decl.

◆ getImplicitCXXConstructorArgs()

ImplicitCXXConstructorArgs clang::CodeGen::getImplicitCXXConstructorArgs ( CodeGenModule CGM,
const CXXConstructorDecl D 
)

◆ getLLVMFieldNumber()

unsigned clang::CodeGen::getLLVMFieldNumber ( CodeGenModule CGM,
const RecordDecl RD,
const FieldDecl FD 
)

Given a non-bitfield struct field, return its index within the elements of the struct's converted type.

The returned index refers to a field number in the complete object type which is returned by convertTypeForMemory. FD must be a field in RD directly (i.e. not an inherited field).

Definition at line 113 of file CodeGenABITypes.cpp.

References clang::CodeGen::CodeGenTypes::getCGRecordLayout(), clang::CodeGen::CGRecordLayout::getLLVMFieldNo(), and clang::CodeGen::CodeGenModule::getTypes().

◆ getNonTrivialCStructCopyAssignmentOperator()

llvm::Function * clang::CodeGen::getNonTrivialCStructCopyAssignmentOperator ( CodeGenModule CGM,
CharUnits  DstAlignment,
CharUnits  SrcAlignment,
bool  IsVolatile,
QualType  QT 
)

Returns the copy assignment operator for a C struct with non-trivially copyable fields, generating it if necessary.

The returned function uses the cdecl calling convention, returns void, and takes two arguments: pointers to the addresses of the destination and source structs, respectively.

Definition at line 970 of file CGNonTrivialStruct.cpp.

References clang::CodeGen::CodeGenModule::getContext(), and getSpecialFunction().

◆ getNonTrivialCStructCopyConstructor()

llvm::Function * clang::CodeGen::getNonTrivialCStructCopyConstructor ( CodeGenModule CGM,
CharUnits  DstAlignment,
CharUnits  SrcAlignment,
bool  IsVolatile,
QualType  QT 
)

Returns the copy constructor for a C struct with non-trivially copyable fields, generating it if necessary.

The returned function uses the cdecl calling convention, returns void, and takes two arguments: pointers to the addresses of the destination and source structs, respectively.

Definition at line 946 of file CGNonTrivialStruct.cpp.

References clang::CodeGen::CodeGenModule::getContext(), and getSpecialFunction().

◆ getNonTrivialCStructDefaultConstructor()

llvm::Function * clang::CodeGen::getNonTrivialCStructDefaultConstructor ( CodeGenModule GCM,
CharUnits  DstAlignment,
bool  IsVolatile,
QualType  QT 
)

Returns the default constructor for a C struct with non-trivially copyable fields, generating it if necessary.

The returned function uses the cdecl calling convention, returns void, and takes a single argument that is a pointer to the address of the struct.

Definition at line 937 of file CGNonTrivialStruct.cpp.

References clang::CodeGen::CodeGenModule::getContext(), and getSpecialFunction().

◆ getNonTrivialCStructDestructor()

llvm::Function * clang::CodeGen::getNonTrivialCStructDestructor ( CodeGenModule CGM,
CharUnits  DstAlignment,
bool  IsVolatile,
QualType  QT 
)

Returns the destructor for a C struct with non-trivially copyable fields, generating it if necessary.

The returned function uses the cdecl calling convention, returns void, and takes a single argument that is a pointer to the address of the struct.

Definition at line 994 of file CGNonTrivialStruct.cpp.

References clang::CodeGen::CodeGenModule::getContext(), and getSpecialFunction().

◆ getNonTrivialCStructMoveAssignmentOperator()

llvm::Function * clang::CodeGen::getNonTrivialCStructMoveAssignmentOperator ( CodeGenModule CGM,
CharUnits  DstAlignment,
CharUnits  SrcAlignment,
bool  IsVolatile,
QualType  QT 
)

Return the move assignment operator for a C struct with non-trivially copyable fields, generating it if necessary.

The returned function uses the cdecl calling convention, returns void, and takes two arguments: pointers to the addresses of the destination and source structs, respectively.

Definition at line 982 of file CGNonTrivialStruct.cpp.

References clang::CodeGen::CodeGenModule::getContext(), and getSpecialFunction().

◆ getNonTrivialCStructMoveConstructor()

llvm::Function * clang::CodeGen::getNonTrivialCStructMoveConstructor ( CodeGenModule CGM,
CharUnits  DstAlignment,
CharUnits  SrcAlignment,
bool  IsVolatile,
QualType  QT 
)

Returns the move constructor for a C struct with non-trivially copyable fields, generating it if necessary.

The returned function uses the cdecl calling convention, returns void, and takes two arguments: pointers to the addresses of the destination and source structs, respectively.

Definition at line 958 of file CGNonTrivialStruct.cpp.

References clang::CodeGen::CodeGenModule::getContext(), and getSpecialFunction().

◆ initializationPatternFor()

llvm::Constant * clang::CodeGen::initializationPatternFor ( CodeGenModule CGM,
llvm::Type *  Ty 
)

◆ operator|() [1/2]

BlockFieldFlags clang::CodeGen::operator| ( BlockFieldFlag_t  l,
BlockFieldFlag_t  r 
)
inline

Definition at line 131 of file CGBlocks.h.

◆ operator|() [2/2]

BlockFlags clang::CodeGen::operator| ( BlockLiteralFlags  l,
BlockLiteralFlags  r 
)
inline

Definition at line 83 of file CGBlocks.h.