clang 8.0.0

Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
clang::CodeGen::CodeGenModule Class Reference

This class organizes the cross-function state that is used while generating LLVM code. More...

`#include "/work/www-prereleases/8.0.0/rc2/builddocs/llvm.src/tools/clang/lib/CodeGen/CodeGenModule.h"`

Inheritance diagram for clang::CodeGen::CodeGenModule:
[legend]
Collaboration diagram for clang::CodeGen::CodeGenModule:
[legend]

## Classes
struct | Structor

## Public Types
typedef std::vector< Structor > | CtorList

## Public Member Functions
| CodeGenModule (ASTContext &C, const HeaderSearchOptions &headersearchopts, const PreprocessorOptions &ppopts, const CodeGenOptions &CodeGenOpts, llvm::Module &M, DiagnosticsEngine &Diags, CoverageSourceInfo *CoverageInfo=nullptr)
| ~CodeGenModule ()
void | clear ()
void | Release ()
| Finalize LLVM code generation. More...
bool | getExpressionLocationsEnabled () const
| Return true if we should emit location information for expressions. More...
CGObjCRuntime & | getObjCRuntime ()
| Return a reference to the configured Objective-C runtime. More...
bool | hasObjCRuntime ()
| Return true iff an Objective-C runtime has been configured. More...
CGOpenCLRuntime & | getOpenCLRuntime ()
| Return a reference to the configured OpenCL runtime. More...
CGOpenMPRuntime & | getOpenMPRuntime ()
| Return a reference to the configured OpenMP runtime. More...
CGCUDARuntime & | getCUDARuntime ()
| Return a reference to the configured CUDA runtime. More...
ObjCEntrypoints & | getObjCEntrypoints () const
InstrProfStats & | getPGOStats ()
llvm::IndexedInstrProfReader * | getPGOReader () const
CoverageMappingModuleGen * | getCoverageMapping () const
llvm::Constant * | getStaticLocalDeclAddress (const VarDecl *D)
void | setStaticLocalDeclAddress (const VarDecl *D, llvm::Constant *C)
llvm::Constant * | getOrCreateStaticVarDecl (const VarDecl &D, llvm::GlobalValue::LinkageTypes Linkage)
llvm::GlobalVariable * | getStaticLocalDeclGuardAddress (const VarDecl *D)
void | setStaticLocalDeclGuardAddress (const VarDecl *D, llvm::GlobalVariable *C)
bool | lookupRepresentativeDecl (StringRef MangledName, GlobalDecl &Result) const
llvm::Constant * | getAtomicSetterHelperFnMap (QualType Ty)
void | setAtomicSetterHelperFnMap (QualType Ty, llvm::Constant *Fn)
llvm::Constant * | getAtomicGetterHelperFnMap (QualType Ty)
void | setAtomicGetterHelperFnMap (QualType Ty, llvm::Constant *Fn)
llvm::Constant * | getTypeDescriptorFromMap (QualType Ty)
void | setTypeDescriptorInMap (QualType Ty, llvm::Constant *C)
CGDebugInfo * | getModuleDebugInfo ()
llvm::MDNode * | getNoObjCARCExceptionsMetadata ()
ASTContext & | getContext () const
const LangOptions & | getLangOpts () const
const HeaderSearchOptions & | getHeaderSearchOpts () const
const PreprocessorOptions & | getPreprocessorOpts () const
const CodeGenOptions & | getCodeGenOpts () const
llvm::Module & | getModule () const
DiagnosticsEngine & | getDiags () const
const llvm::DataLayout & | getDataLayout () const
const TargetInfo & | getTarget () const
const llvm::Triple & | getTriple () const
bool | supportsCOMDAT () const
void | maybeSetTrivialComdat (const Decl &D, llvm::GlobalObject &GO)
CGCXXABI & | getCXXABI () const
llvm::LLVMContext & | getLLVMContext ()
bool | shouldUseTBAA () const
const TargetCodeGenInfo & | getTargetCodeGenInfo ()
CodeGenTypes & | getTypes ()
CodeGenVTables & | getVTables ()
ItaniumVTableContext & | getItaniumVTableContext ()
MicrosoftVTableContext & | getMicrosoftVTableContext ()
CtorList & | getGlobalCtors ()
CtorList & | getGlobalDtors ()
llvm::MDNode * | getTBAATypeInfo (QualType QTy)
| getTBAATypeInfo - Get metadata used to describe accesses to objects of the given type. More...
TBAAAccessInfo | getTBAAAccessInfo (QualType AccessType)
| getTBAAAccessInfo - Get TBAA information that describes an access to an object of the given type. More...
TBAAAccessInfo | getTBAAVTablePtrAccessInfo (llvm::Type *VTablePtrType)
| getTBAAVTablePtrAccessInfo - Get the TBAA information that describes an access to a virtual table pointer. More...
llvm::MDNode * | getTBAAStructInfo (QualType QTy)
llvm::MDNode * | getTBAABaseTypeInfo (QualType QTy)
| getTBAABaseTypeInfo - Get metadata that describes the given base access type. More...
llvm::MDNode * | getTBAAAccessTagInfo (TBAAAccessInfo Info)
| getTBAAAccessTagInfo - Get TBAA tag for a given memory access. More...
TBAAAccessInfo | mergeTBAAInfoForCast (TBAAAccessInfo SourceInfo, TBAAAccessInfo TargetInfo)
| mergeTBAAInfoForCast - Get merged TBAA information for the purposes of type casts. More...
TBAAAccessInfo | mergeTBAAInfoForConditionalOperator (TBAAAccessInfo InfoA, TBAAAccessInfo InfoB)
| mergeTBAAInfoForConditionalOperator - Get merged TBAA information for the purposes of conditional operator. More...
TBAAAccessInfo | mergeTBAAInfoForMemoryTransfer (TBAAAccessInfo DestInfo, TBAAAccessInfo SrcInfo)
| mergeTBAAInfoForMemoryTransfer - Get merged TBAA information for the purposes of memory transfer calls. More...
TBAAAccessInfo | getTBAAInfoForSubobject (LValue Base, QualType AccessType)
| getTBAAInfoForSubobject - Get TBAA information for an access with a given base lvalue. More...
bool | isTypeConstant (QualType QTy, bool ExcludeCtorDtor)
| isTypeConstant - Determine whether an object of this type can be emitted as a constant. More...
bool | isPaddedAtomicType (QualType type)
bool | isPaddedAtomicType (const AtomicType *type)
void | DecorateInstructionWithTBAA (llvm::Instruction *Inst, TBAAAccessInfo TBAAInfo)
| DecorateInstructionWithTBAA - Decorate the instruction with a TBAA tag. More...
void | DecorateInstructionWithInvariantGroup (llvm::Instruction *I, const CXXRecordDecl *RD)
| Adds !invariant.barrier !tag to instruction. More...
llvm::ConstantInt * | getSize (CharUnits numChars)
| Emit the given number of characters as a value of type size_t. More...
void | setGlobalVisibility (llvm::GlobalValue *GV, const NamedDecl *D) const
| Set the visibility for the given LLVM GlobalValue. More...
void | setGlobalVisibilityAndLocal (llvm::GlobalValue *GV, const NamedDecl *D) const
void | setDSOLocal (llvm::GlobalValue *GV) const
void | setDLLImportDLLExport (llvm::GlobalValue *GV, GlobalDecl D) const
void | setDLLImportDLLExport (llvm::GlobalValue *GV, const NamedDecl *D) const
void | setGVProperties (llvm::GlobalValue *GV, GlobalDecl GD) const
| Set visibility, dllimport/dllexport and dso_local. More...
void | setGVProperties (llvm::GlobalValue *GV, const NamedDecl *D) const
void | setTLSMode (llvm::GlobalValue *GV, const VarDecl &D) const
| Set the TLS mode for the given LLVM GlobalValue for the thread-local variable declaration D. More...
llvm::Constant * | GetAddrOfGlobal (GlobalDecl GD, ForDefinition_t IsForDefinition=NotForDefinition)
llvm::GlobalVariable * | CreateOrReplaceCXXRuntimeVariable (StringRef Name, llvm::Type *Ty, llvm::GlobalValue::LinkageTypes Linkage, unsigned Alignment)
| Will return a global variable of the given type. More...
llvm::Function * | CreateGlobalInitOrDestructFunction (llvm::FunctionType *ty, const Twine &name, const CGFunctionInfo &FI, SourceLocation Loc=SourceLocation(), bool TLS=false)
LangAS | GetGlobalVarAddressSpace (const VarDecl *D)
| Return the AST address space of the underlying global variable for D, as determined by its declaration. More...
llvm::Constant * | GetAddrOfGlobalVar (const VarDecl *D, llvm::Type *Ty=nullptr, ForDefinition_t IsForDefinition=NotForDefinition)
| Return the llvm::Constant for the address of the given global variable. More...
LangAS | getStringLiteralAddressSpace () const
| Return the AST address space of string literal, which is used to emit the string literal as global variable in LLVM IR. More...
llvm::Constant * | GetAddrOfFunction (GlobalDecl GD, llvm::Type *Ty=nullptr, bool ForVTable=false, bool DontDefer=false, ForDefinition_t IsForDefinition=NotForDefinition)
| Return the address of the given function. More...
llvm::Constant * | GetAddrOfRTTIDescriptor (QualType Ty, bool ForEH=false)
| Get the address of the RTTI descriptor for the given type. More...
ConstantAddress | GetAddrOfUuidDescriptor (const CXXUuidofExpr *E)
| Get the address of a uuid descriptor . More...
llvm::Constant * | GetAddrOfThunk (StringRef Name, llvm::Type *FnTy, GlobalDecl GD)
| Get the address of the thunk for the given global decl. More...
ConstantAddress | GetWeakRefReference (const ValueDecl *VD)
| Get a reference to the target of VD. More...
CharUnits | getClassPointerAlignment (const CXXRecordDecl *CD)
| Returns the assumed alignment of an opaque pointer to the given class. More...
CharUnits | getVBaseAlignment (CharUnits DerivedAlign, const CXXRecordDecl *Derived, const CXXRecordDecl *VBase)
| Returns the assumed alignment of a virtual base of a class. More...
CharUnits | getDynamicOffsetAlignment (CharUnits ActualAlign, const CXXRecordDecl *Class, CharUnits ExpectedTargetAlign)
| Given a class pointer with an actual known alignment, and the expected alignment of an object at a dynamic offset w.r.t that pointer, return the alignment to assume at the offset. More...
CharUnits | computeNonVirtualBaseClassOffset (const CXXRecordDecl *DerivedClass, CastExpr::path_const_iterator Start, CastExpr::path_const_iterator End)
llvm::Constant * | GetNonVirtualBaseClassOffset (const CXXRecordDecl *ClassDecl, CastExpr::path_const_iterator PathBegin, CastExpr::path_const_iterator PathEnd)
| Returns the offset from a derived class to a class. More...
int | getUniqueBlockCount ()
| Fetches the global unique block count. More...
llvm::Type * | getBlockDescriptorType ()
| Fetches the type of a generic block descriptor. More...
llvm::Type * | getGenericBlockLiteralType ()
| The type of a generic block literal. More...
llvm::Constant * | GetAddrOfGlobalBlock (const BlockExpr *BE, StringRef Name)
| Gets the address of a block which requires no captures. More...
llvm::Constant * | getAddrOfGlobalBlockIfEmitted (const BlockExpr *BE)
| Returns the address of a block which requires no caputres, or null if we've yet to emit the block for BE. More...
void | setAddrOfGlobalBlock (const BlockExpr *BE, llvm::Constant *Addr)
| Notes that BE's global block is available via Addr. More...
ConstantAddress | GetAddrOfConstantCFString (const StringLiteral *Literal)
| Return a pointer to a constant CFString object for the given string. More...
ConstantAddress | GetAddrOfConstantString (const StringLiteral *Literal)
| Return a pointer to a constant NSString object for the given string. More...
llvm::Constant * | GetConstantArrayFromStringLiteral (const StringLiteral *E)
| Return a constant array for the given string. More...
ConstantAddress | GetAddrOfConstantStringFromLiteral (const StringLiteral *S, StringRef Name=".str")
| Return a pointer to a constant array for the given string literal. More...
ConstantAddress | GetAddrOfConstantStringFromObjCEncode (const ObjCEncodeExpr *)
| Return a pointer to a constant array for the given ObjCEncodeExpr node. More...
ConstantAddress | GetAddrOfConstantCString (const std::string &Str, const char *GlobalName=nullptr)
| Returns a pointer to a character array containing the literal and a terminating '\0' character. More...
ConstantAddress | GetAddrOfConstantCompoundLiteral (const CompoundLiteralExpr *E)
| Returns a pointer to a constant global variable for the given file-scope compound literal expression. More...
llvm::GlobalVariable * | getAddrOfConstantCompoundLiteralIfEmitted (const CompoundLiteralExpr *E)
| If it's been emitted already, returns the GlobalVariable corresponding to a compound literal. More...
void | setAddrOfConstantCompoundLiteral (const CompoundLiteralExpr *CLE, llvm::GlobalVariable *GV)
| Notes that CLE's GlobalVariable is GV. More...
ConstantAddress | GetAddrOfGlobalTemporary (const MaterializeTemporaryExpr *E, const Expr *Inner)
| Returns a pointer to a global variable representing a temporary with static or thread storage duration. More...
QualType | getObjCFastEnumerationStateType ()
| Retrieve the record type that describes the state of an Objective-C fast enumeration loop (for..in). More...
llvm::Function * | codegenCXXStructor (const CXXMethodDecl *MD, StructorType Type)
llvm::Constant * | getAddrOfCXXStructor (const CXXMethodDecl *MD, StructorType Type, const CGFunctionInfo *FnInfo=nullptr, llvm::FunctionType *FnType=nullptr, bool DontDefer=false, ForDefinition_t IsForDefinition=NotForDefinition)
| Return the address of the constructor/destructor of the given type. More...
llvm::Constant * | getBuiltinLibFunction (const FunctionDecl *FD, unsigned BuiltinID)
| Given a builtin id for a function like "__builtin_fabsf", return a Function* for "fabsf". More...
llvm::Function * | getIntrinsic (unsigned IID, ArrayRef< llvm::Type *> Tys=None)
void | EmitTopLevelDecl (Decl *D)
| Emit code for a single top level declaration. More...
void | AddDeferredUnusedCoverageMapping (Decl *D)
| Stored a deferred empty coverage mapping for an unused and thus uninstrumented top level declaration. More...
void | ClearUnusedCoverageMapping (const Decl *D)
| Remove the deferred empty coverage mapping as this declaration is actually instrumented. More...
void | EmitDeferredUnusedCoverageMappings ()
| Emit all the deferred coverage mappings for the uninstrumented functions. More...
void | HandleCXXStaticMemberVarInstantiation (VarDecl *VD)
| Tell the consumer that this variable has been instantiated. More...
template<typename SomeDecl >
void | MaybeHandleStaticInExternC (const SomeDecl *D, llvm::GlobalValue *GV)
| If the declaration has internal linkage but is inside an extern "C" linkage specification, prepare to emit an alias for it to the expected name. More...
void | addUsedGlobal (llvm::GlobalValue *GV)
| Add a global to a list to be added to the llvm.used metadata. More...
void | addCompilerUsedGlobal (llvm::GlobalValue *GV)
| Add a global to a list to be added to the llvm.compiler.used metadata. More...
void | AddCXXDtorEntry (llvm::Constant *DtorFn, llvm::Constant *Object)
| Add a destructor and object to add to the C++ global destructor function. More...
llvm::Constant * | CreateRuntimeFunction (llvm::FunctionType *Ty, StringRef Name, llvm::AttributeList ExtraAttrs=llvm::AttributeList(), bool Local=false)
| Create a new runtime function with the specified type and name. More...
llvm::Constant * | CreateBuiltinFunction (llvm::FunctionType *Ty, StringRef Name, llvm::AttributeList ExtraAttrs=llvm::AttributeList())
| Create a new compiler builtin function with the specified type and name. More...
llvm::Constant * | CreateRuntimeVariable (llvm::Type *Ty, StringRef Name)
| Create a new runtime global variable with the specified type and name. More...
llvm::Constant * | getLLVMLifetimeStartFn ()
| Lazily declare the .lifetime.start intrinsic. More...
llvm::Constant * | getLLVMLifetimeEndFn ()
| Lazily declare the .lifetime.end intrinsic. More...
void | UpdateCompletedType (const TagDecl *TD)
llvm::Constant * | getMemberPointerConstant (const UnaryOperator *e)
void | EmitExplicitCastExprType (const ExplicitCastExpr *E, CodeGenFunction *CGF=nullptr)
| Emit type info if type of an expression is a variably modified type. More...
llvm::Constant * | EmitNullConstant (QualType T)
| Return the result of value-initializing the given type, i.e. More...
llvm::Constant * | EmitNullConstantForBase (const CXXRecordDecl *Record)
| Return a null constant appropriate for zero-initializing a base class with the given type. More...
void | Error (SourceLocation loc, StringRef error)
| Emit a general error that something can't be done. More...
void | ErrorUnsupported (const Stmt *S, const char *Type)
| Print out an error that codegen doesn't support the specified stmt yet. More...
void | ErrorUnsupported (const Decl *D, const char *Type)
| Print out an error that codegen doesn't support the specified decl yet. More...
void | SetInternalFunctionAttributes (GlobalDecl GD, llvm::Function *F, const CGFunctionInfo &FI)
| Set the attributes on the LLVM function for the given decl and function info. More...
void | SetLLVMFunctionAttributes (GlobalDecl GD, const CGFunctionInfo &Info, llvm::Function *F)
| Set the LLVM function attributes (sext, zext, etc). More...
void | SetLLVMFunctionAttributesForDefinition (const Decl *D, llvm::Function *F)
| Set the LLVM function attributes which only apply to a function definition. More...
bool | ReturnTypeUsesSRet (const CGFunctionInfo &FI)
| Return true iff the given type uses 'sret' when used as a return type. More...
bool | ReturnSlotInterferesWithArgs (const CGFunctionInfo &FI)
| Return true iff the given type uses an argument slot when 'sret' is used as a return type. More...
bool | ReturnTypeUsesFPRet (QualType ResultType)
| Return true iff the given type uses 'fpret' when used as a return type. More...
bool | ReturnTypeUsesFP2Ret (QualType ResultType)
| Return true iff the given type uses 'fp2ret' when used as a return type. More...
void | ConstructAttributeList (StringRef Name, const CGFunctionInfo &Info, CGCalleeInfo CalleeInfo, llvm::AttributeList &Attrs, unsigned &CallingConv, bool AttrOnCallSite)
| Get the LLVM attributes and calling convention to use for a particular function type. More...
void | AddDefaultFnAttrs (llvm::Function &F)
| Adds attributes to F according to our CodeGenOptions and LangOptions, as though we had emitted it ourselves. More...
TargetAttr::ParsedTargetAttr | filterFunctionTargetAttrs (const TargetAttr *TD)
| Parses the target attributes passed in, and returns only the ones that are valid feature names. More...
void | getFunctionFeatureMap (llvm::StringMap< bool > &FeatureMap, GlobalDecl GD)
StringRef | getMangledName (GlobalDecl GD)
StringRef | getBlockMangledName (GlobalDecl GD, const BlockDecl *BD)
void | EmitTentativeDefinition (const VarDecl *D)
void | EmitVTable (CXXRecordDecl *Class)
| This is a callback from Sema to tell us that a particular vtable is required to be emitted in this translation unit. More...
void | RefreshTypeCacheForClass (const CXXRecordDecl *Class)
void | AppendLinkerOptions (StringRef Opts)
| Appends Opts to the "llvm.linker.options" metadata value. More...
void | AddDetectMismatch (StringRef Name, StringRef Value)
| Appends a detect mismatch command to the linker options. More...
void | AddDependentLib (StringRef Lib)
| Appends a dependent lib to the "llvm.linker.options" metadata value. More...
void | AddELFLibDirective (StringRef Lib)
llvm::GlobalVariable::LinkageTypes | getFunctionLinkage (GlobalDecl GD)
void | setFunctionLinkage (GlobalDecl GD, llvm::Function *F)
llvm::GlobalVariable::LinkageTypes | getVTableLinkage (const CXXRecordDecl *RD)
| Return the appropriate linkage for the vtable, VTT, and type information of the given class. More...
CharUnits | GetTargetTypeStoreSize (llvm::Type *Ty) const
| Return the store size, in character units, of the given LLVM type. More...
llvm::GlobalValue::LinkageTypes | getLLVMLinkageForDeclarator (const DeclaratorDecl *D, GVALinkage Linkage, bool IsConstantVariable)
| Returns LLVM linkage for a declarator. More...
llvm::GlobalValue::LinkageTypes | getLLVMLinkageVarDefinition (const VarDecl *VD, bool IsConstant)
| Returns LLVM linkage for a declarator. More...
void | EmitGlobalAnnotations ()
| Emit all the global annotations. More...
llvm::Constant * | EmitAnnotationString (StringRef Str)
| Emit an annotation string. More...
llvm::Constant * | EmitAnnotationUnit (SourceLocation Loc)
| Emit the annotation's translation unit. More...
llvm::Constant * | EmitAnnotationLineNo (SourceLocation L)
| Emit the annotation line number. More...
llvm::Constant * | EmitAnnotateAttr (llvm::GlobalValue *GV, const AnnotateAttr *AA, SourceLocation L)
| Generate the llvm::ConstantStruct which contains the annotation information for a given GlobalValue. More...
void | AddGlobalAnnotations (const ValueDecl *D, llvm::GlobalValue *GV)
| Add global annotations that are set on D, for the global GV. More...
bool | isInSanitizerBlacklist (SanitizerMask Kind, llvm::Function *Fn, SourceLocation Loc) const
bool | isInSanitizerBlacklist (llvm::GlobalVariable *GV, SourceLocation Loc, QualType Ty, StringRef Category=StringRef()) const
bool | imbueXRayAttrs (llvm::Function *Fn, SourceLocation Loc, StringRef Category=StringRef()) const
| Imbue XRay attributes to a function, applying the always/never attribute lists in the process. More...
SanitizerMetadata * | getSanitizerMetadata ()
void | addDeferredVTable (const CXXRecordDecl *RD)
void | EmitGlobal (GlobalDecl D)
| Emit code for a single global function or var decl. More...
bool | TryEmitBaseDestructorAsAlias (const CXXDestructorDecl *D)
| Try to emit a base destructor as an alias to its primary base-class destructor. More...
llvm::GlobalValue * | GetGlobalValue (StringRef Ref)
void | SetCommonAttributes (GlobalDecl GD, llvm::GlobalValue *GV)
| Set attributes which are common to any form of a global definition (alias, Objective-C method, function, global variable). More...
void | addReplacement (StringRef Name, llvm::Constant *C)
void | addGlobalValReplacement (llvm::GlobalValue *GV, llvm::Constant *C)
void | EmitOMPThreadPrivateDecl (const OMPThreadPrivateDecl *D)
| Emit a code for threadprivate directive. More...
void | EmitOMPDeclareReduction (const OMPDeclareReductionDecl *D, CodeGenFunction *CGF=nullptr)
| Emit a code for declare reduction construct. More...
void | EmitOMPRequiresDecl (const OMPRequiresDecl *D)
| Emit a code for requires directive. More...
bool | HasHiddenLTOVisibility (const CXXRecordDecl *RD)
| Returns whether the given record has hidden LTO visibility and therefore may participate in (single-module) CFI and whole-program vtable optimization. More...
void | EmitVTableTypeMetadata (llvm::GlobalVariable *VTable, const VTableLayout &VTLayout)
| Emit type metadata for the given vtable using the given layout. More...
llvm::ConstantInt * | CreateCrossDsoCfiTypeId (llvm::Metadata *MD)
| Generate a cross-DSO type identifier for MD. More...
llvm::Metadata * | CreateMetadataIdentifierForType (QualType T)
| Create a metadata identifier for the given type. More...
llvm::Metadata * | CreateMetadataIdentifierForVirtualMemPtrType (QualType T)
| Create a metadata identifier that is intended to be used to check virtual calls via a member function pointer. More...
llvm::Metadata * | CreateMetadataIdentifierGeneralized (QualType T)
| Create a metadata identifier for the generalization of the given type. More...
void | CreateFunctionTypeMetadataForIcall (const FunctionDecl *FD, llvm::Function *F)
| Create and attach type metadata to the given function. More...
bool | NeedAllVtablesTypeId () const
| Returns whether this module needs the "all-vtables" type identifier. More...
void | AddVTableTypeMetadata (llvm::GlobalVariable *VTable, CharUnits Offset, const CXXRecordDecl *RD)
| Create and attach type metadata for the given vtable. More...
std::vector< const CXXRecordDecl * > | getMostBaseClasses (const CXXRecordDecl *RD)
| Return a vector of most-base classes for RD. More...
llvm::Constant * | getTerminateFn ()
| Get the declaration of std::terminate for the platform. More...
llvm::SanitizerStatReport & | getSanStats ()
llvm::Value * | createOpenCLIntToSamplerConversion (const Expr *E, CodeGenFunction &CGF)
llvm::Constant * | getNullPointer (llvm::PointerType *T, QualType QT)
| Get target specific null pointer. More...
Custom Blocks Runtime Interfaces
llvm::Constant * | getNSConcreteGlobalBlock ()
llvm::Constant * | getNSConcreteStackBlock ()
llvm::Constant * | getBlockObjectAssign ()
llvm::Constant * | getBlockObjectDispose ()
Public Member Functions inherited from clang::CodeGen::CodeGenTypeCache
CharUnits | getIntSize () const
CharUnits | getIntAlign () const
CharUnits | getSizeSize () const
CharUnits | getSizeAlign () const
CharUnits | getPointerSize () const
CharUnits | getPointerAlign () const
llvm::CallingConv::ID | getRuntimeCC () const
LangAS | getASTAllocaAddressSpace () const

## Static Public Member Functions
static llvm::GlobalValue::VisibilityTypes | GetLLVMVisibility (Visibility V)

## Public Attributes
llvm::Constant * | IsOSVersionAtLeastFn = nullptr
llvm::FoldingSet< BlockByrefHelpers > | ByrefHelpersCache
int | GlobalUniqueCount
Public Attributes inherited from clang::CodeGen::CodeGenTypeCache
llvm::Type * | VoidTy
| void More...
llvm::IntegerType * | Int8Ty
| i8, i16, i32, and i64 More...
llvm::IntegerType * | Int16Ty
llvm::IntegerType * | Int32Ty
llvm::IntegerType * | Int64Ty
llvm::Type * | HalfTy
| float, double More...
llvm::Type * | FloatTy
llvm::Type * | DoubleTy
llvm::IntegerType * | IntTy
| int More...
union {
llvm::IntegerType * IntPtrTy
llvm::IntegerType * SizeTy
llvm::IntegerType * PtrDiffTy
}; |
| intptr_t, size_t, and ptrdiff_t, which we assume are the same size. More...
union {
llvm::PointerType * VoidPtrTy
llvm::PointerType * Int8PtrTy
}; |
| void* in address space 0 More...
union {
llvm::PointerType * VoidPtrPtrTy
llvm::PointerType * Int8PtrPtrTy
}; |
| void** in address space 0 More...
union {
llvm::PointerType * AllocaVoidPtrTy
llvm::PointerType * AllocaInt8PtrTy
}; |
| void* in alloca address space More...
union {
unsigned char IntSizeInBytes
unsigned char IntAlignInBytes
}; |
| The size and alignment of the builtin C type 'int'. More...
unsigned char | PointerWidthInBits
| The width of a pointer into the generic address space. More...
union {
unsigned char PointerAlignInBytes
unsigned char PointerSizeInBytes
}; |
| The size and alignment of a pointer into the generic address space. More...
union {
unsigned char SizeSizeInBytes
unsigned char SizeAlignInBytes
}; |
| The size and alignment of size_t. More...
LangAS | ASTAllocaAddressSpace
llvm::CallingConv::ID | RuntimeCC

## Detailed Description

This class organizes the cross-function state that is used while generating LLVM code.

Definition at line 274 of file CodeGenModule.h.

## Member Typedef Documentation

## ◆ CtorList

typedef std::vector<Structor> clang::CodeGen::CodeGenModule::CtorList

Definition at line 290 of file CodeGenModule.h.

## Constructor & Destructor Documentation

## ◆ CodeGenModule()

CodeGenModule::CodeGenModule | ( | ASTContext & | C,
|  | const HeaderSearchOptions & | headersearchopts,
|  | const PreprocessorOptions & | ppopts,
|  | const CodeGenOptions & | CodeGenOpts,
|  | llvm::Module & | M,
|  | DiagnosticsEngine & | Diags,
|  | CoverageSourceInfo * | CoverageInfo = `nullptr`
| ) |  |

Definition at line 90 of file CodeGenModule.cpp.

## ◆ ~CodeGenModule()

CodeGenModule::~CodeGenModule | ( |  | ) |

Definition at line 175 of file CodeGenModule.cpp.

References clang::CodeGen::CGOpenMPRuntime(), clang::CodeGen::CreateGNUObjCRuntime(), clang::CodeGen::CreateMacObjCRuntime(), clang::CodeGen::CreateNVCUDARuntime(), clang::ObjCRuntime::FragileMacOSX, clang::ObjCRuntime::GCC, clang::ObjCRuntime::getKind(), getLangOpts(), getTriple(), clang::ObjCRuntime::GNUstep, clang::ObjCRuntime::iOS, clang::ObjCRuntime::MacOSX, clang::LangOptions::ObjCRuntime, clang::ObjCRuntime::ObjFW, and clang::ObjCRuntime::WatchOS.

## Member Function Documentation

## ◆ addCompilerUsedGlobal()

void CodeGenModule::addCompilerUsedGlobal | ( | llvm::GlobalValue * | GV | ) |

Add a global to a list to be added to the llvm.compiler.used metadata.

Definition at line 1614 of file CodeGenModule.cpp.

Referenced by emitInterWarpCopyFunction(), getBlockLayoutInfoString(), and clang::CodeGen::registerTargetGlobalVariable().

## ◆ AddCXXDtorEntry()

void clang::CodeGen::CodeGenModule::AddCXXDtorEntry | ( | llvm::Constant * | DtorFn,
|  | llvm::Constant * | Object
| ) |  |
| inline

Add a destructor and object to add to the C++ global destructor function.

Definition at line 1002 of file CodeGenModule.h.

References EmitNullConstant(), and EmitNullConstantForBase().

## ◆ AddDefaultFnAttrs()

void CodeGenModule::AddDefaultFnAttrs | ( | llvm::Function & | F | ) |

Adds attributes to F according to our CodeGenOptions and LangOptions, as though we had emitted it ourselves.

We remove any attributes on F that conflict with the attributes we add here.

This is useful for adding attrs to bitcode modules that you want to link with but don't control, such as CUDA's libdevice. When linking with such a bitcode library, you might want to set e.g. its functions' "unsafe-fp-math" attribute to match the attr of the functions you're codegen'ing. Otherwise, LLVM will interpret the bitcode module's lack of unsafe-fp-math attrs as tantamount to unsafe-fp-math=false, and then LLVM will propagate unsafe-fp-math=false up to every transitive caller of a function in the bitcode library!

With the exception of fast-math attrs, this will only make the attributes on the function more conservative. But it's unsafe to call this on a function which relies on particular fast-math attributes for correctness. It's up to you to ensure that this is safe.

Definition at line 1827 of file CGCall.cpp.

## ◆ AddDeferredUnusedCoverageMapping()

void CodeGenModule::AddDeferredUnusedCoverageMapping | ( | Decl * | D | ) |

Stored a deferred empty coverage mapping for an unused and thus uninstrumented top level declaration.

Definition at line 5050 of file CodeGenModule.cpp.

References clang::XRayInstrKind::Function, clang::Decl::getBeginLoc(), getContext(), clang::SourceManager::getFileID(), clang::Decl::getKind(), clang::SourceManager::getMainFileID(), clang::ASTContext::getSourceManager(), LimitedCoverage(), and SM.

Referenced by EmitTopLevelDecl().

## ◆ addDeferredVTable()

void clang::CodeGen::CodeGenModule::addDeferredVTable | ( | const CXXRecordDecl * | RD | ) |
| inline

Definition at line 1217 of file CodeGenModule.h.

References clang::CodeGen::NotForDefinition, and Offset.

## ◆ AddDependentLib()

void CodeGenModule::AddDependentLib | ( | StringRef | Lib | ) |

Appends a dependent lib to the "llvm.linker.options" metadata value.

Definition at line 1669 of file CodeGenModule.cpp.

References clang::CodeGen::TargetCodeGenInfo::getDependentLibraryOption(), getLLVMContext(), and getTargetCodeGenInfo().

Referenced by EmitTopLevelDecl().

## ◆ AddDetectMismatch()

void CodeGenModule::AddDetectMismatch | ( | StringRef | Name,
|  | StringRef | Value
| ) |  |

Appends a detect mismatch command to the linker options.

Definition at line 1656 of file CodeGenModule.cpp.

Referenced by EmitTopLevelDecl().

## ◆ AddELFLibDirective()

void CodeGenModule::AddELFLibDirective | ( | StringRef | Lib | ) |

Definition at line 1663 of file CodeGenModule.cpp.

References getLLVMContext().

Referenced by EmitTopLevelDecl().

## ◆ AddGlobalAnnotations()

void CodeGenModule::AddGlobalAnnotations | ( | const ValueDecl * | D,
|  | llvm::GlobalValue * | GV
| ) |  |

Add global annotations that are set on D, for the global GV.

Those annotations are emitted during finalization of the LLVM code.

Definition at line 1942 of file CodeGenModule.cpp.

References EmitAnnotateAttr(), clang::Decl::getLocation(), clang::Decl::hasAttr(), and clang::Decl::specific_attrs().

Referenced by clang::CodeGen::CodeGenFunction::EmitStaticVarDecl(), HandleCXXStaticMemberVarInstantiation(), and maybeSetTrivialComdat().

## ◆ addGlobalValReplacement()

void CodeGenModule::addGlobalValReplacement | ( | llvm::GlobalValue * | GV,
|  | llvm::Constant * | C
| ) |  |

Definition at line 259 of file CodeGenModule.cpp.

## ◆ addReplacement()

void CodeGenModule::addReplacement | ( | StringRef | Name,
|  | llvm::Constant * | C
| ) |  |

Definition at line 224 of file CodeGenModule.cpp.

Referenced by emitConstructorDestructorAlias(), and TryEmitBaseDestructorAsAlias().

## ◆ addUsedGlobal()

void CodeGenModule::addUsedGlobal | ( | llvm::GlobalValue * | GV | ) |

Add a global to a list to be added to the llvm.used metadata.

Definition at line 1608 of file CodeGenModule.cpp.

Referenced by buildGlobalBlock(), clang::CodeGen::CodeGenFunction::EmitCfiCheckFail(), clang::CodeGen::emitDeclareTargetVarDefinition(), emitGlobalDtorWithTLRegDtor(), clang::CodeGen::CodeGenFunction::EmitStaticVarDecl(), clang::CodeGen::getAddrOfDeclareTargetLink(), and SetCommonAttributes().

## ◆ AddVTableTypeMetadata()

void CodeGenModule::AddVTableTypeMetadata | ( | llvm::GlobalVariable * | VTable,
|  | CharUnits | Offset,
|  | const CXXRecordDecl * | RD
| ) |  |

Create and attach type metadata for the given vtable.

Definition at line 5424 of file CodeGenModule.cpp.

References CreateCrossDsoCfiTypeId(), CreateMetadataIdentifierForType(), getLLVMContext(), clang::CharUnits::getQuantity(), clang::TypeDecl::getTypeForDecl(), and NeedAllVtablesTypeId().

## ◆ AppendLinkerOptions()

void CodeGenModule::AppendLinkerOptions | ( | StringRef | Opts | ) |

Appends Opts to the "llvm.linker.options" metadata value.

Definition at line 1651 of file CodeGenModule.cpp.

References getLLVMContext().

Referenced by emitGlobalDtorWithTLRegDtor(), and EmitTopLevelDecl().

## ◆ clear()

void CodeGenModule::clear | ( |  | ) |

Definition at line 368 of file CodeGenModule.cpp.

## ◆ ClearUnusedCoverageMapping()

void CodeGenModule::ClearUnusedCoverageMapping | ( | const Decl * | D | ) |

Remove the deferred empty coverage mapping as this declaration is actually instrumented.

Definition at line 5076 of file CodeGenModule.cpp.

## ◆ codegenCXXStructor()

llvm::Function * CodeGenModule::codegenCXXStructor | ( | const CXXMethodDecl * | MD,
|  | StructorType | Type
| ) |  |

Definition at line 207 of file CGCXX.cpp.

References clang::CodeGen::CodeGenTypes::arrangeCXXStructorDeclaration(), clang::CodeGen::ForDefinition, clang::CodeGen::CodeGenFunction::GenerateCode(), getAddrOfCXXStructor(), getTypes(), setFunctionLinkage(), SetLLVMFunctionAttributesForDefinition(), clang::CodeGen::toCXXCtorType(), and clang::CodeGen::toCXXDtorType().

Referenced by emitConstructorDestructorAlias(), emitCXXConstructor(), and emitCXXDestructor().

## ◆ computeNonVirtualBaseClassOffset()

CharUnits CodeGenModule::computeNonVirtualBaseClassOffset | ( | const CXXRecordDecl * | DerivedClass,
|  | CastExpr::path_const_iterator | Start,
|  | CastExpr::path_const_iterator | End
| ) |  |

Definition at line 150 of file CGClass.cpp.

References End, clang::Type::getAs(), clang::ASTContext::getASTRecordLayout(), getContext(), clang::CXXBaseSpecifier::getType(), clang::CXXBaseSpecifier::isVirtual(), Offset, and clang::CharUnits::Zero().

Referenced by GetNonVirtualBaseClassOffset().

## ◆ ConstructAttributeList()

void CodeGenModule::ConstructAttributeList | ( | StringRef | Name,
|  | const CGFunctionInfo & | Info,
|  | CGCalleeInfo | CalleeInfo,
|  | llvm::AttributeList & | Attrs,
|  | unsigned & | CallingConv,
|  | bool | AttrOnCallSite
| ) |  |

Get the LLVM attributes and calling convention to use for a particular function type.

Parameters

  Name | - The function name.
  Info | - The function type information.
  CalleeInfo | - The callee information these attributes are being constructed for. If valid, the attributes applied to this decl may contribute to the function attributes and calling convention.
  Attrs | [out] - On return, the attribute list to use.
  CallingConv | [out] - On return, the LLVM calling convention to use.

Definition at line 1835 of file CGCall.cpp.

References AddAttributesFromFunctionProtoType(), clang::CodeGen::CGFunctionInfo::arg_begin(), clang::CodeGen::CGFunctionInfo::arg_end(), clang::CodeGen::CGFunctionInfo::arg_size(), clang::CodeGen::ABIArgInfo::CoerceAndExpand, clang::CodeGen::ABIArgInfo::Direct, clang::CodeGen::ABIArgInfo::Expand, clang::CodeGen::ABIArgInfo::Extend, clang::FunctionType::ExtParameterInfo::getABI(), clang::Type::getAs(), clang::CodeGen::CGCalleeInfo::getCalleeDecl(), clang::CodeGen::CGCalleeInfo::getCalleeFunctionProtoType(), clang::CodeGen::CodeGenTypes::getContext(), clang::GlobalDecl::getDecl(), clang::CodeGen::CGFunctionInfo::getEffectiveCallingConvention(), clang::CodeGen::CGFunctionInfo::getExtParameterInfo(), clang::CodeGen::ABIArgInfo::getIndirectAlign(), clang::CodeGen::ABIArgInfo::getIndirectByVal(), clang::CodeGen::ABIArgInfo::getInReg(), clang::CodeGen::ABIArgInfo::getKind(), clang::CodeGen::CodeGenTypes::getLLVMContext(), clang::CodeGen::ABIArgInfo::getPaddingInReg(), clang::Type::getPointeeType(), clang::CharUnits::getQuantity(), clang::CodeGen::CGFunctionInfo::getReturnInfo(), clang::CodeGen::CGFunctionInfo::getReturnType(), clang::CodeGen::ABIArgInfo::getSuppressSRet(), clang::ASTContext::getTypeInfoInChars(), clang::Decl::hasAttr(), clang::CodeGen::ABIArgInfo::Ignore, clang::CodeGen::ABIArgInfo::InAlloca, clang::CodeGen::ABIArgInfo::Indirect, clang::CodeGen::CGFunctionInfo::isChainCall(), clang::Type::isConstantSizeType(), clang::Type::isIncompleteType(), clang::FunctionType::ExtParameterInfo::isNoEscape(), clang::CodeGen::CGFunctionInfo::isNoReturn(), clang::CodeGen::ABIArgInfo::isSignExt(), clang::CXXMethodDecl::isVirtual(), clang::Type::isVoidType(), clang::CharUnits::isZero(), clang::CodeGen::Ordinary, clang::SwiftContext, clang::SwiftErrorResult, and clang::SwiftIndirectResult.

Referenced by SetLLVMFunctionAttributes().

## ◆ CreateBuiltinFunction()

llvm::Constant * CodeGenModule::CreateBuiltinFunction | ( | llvm::FunctionType * | FTy,
|  | StringRef | Name,
|  | llvm::AttributeList | ExtraAttrs = `llvm::AttributeList()`
| ) |  |

Create a new compiler builtin function with the specified type and name.

CreateBuiltinFunction - Create a new builtin function with the specified type and name.

Definition at line 2988 of file CodeGenModule.cpp.

## ◆ CreateCrossDsoCfiTypeId()

llvm::ConstantInt * CodeGenModule::CreateCrossDsoCfiTypeId | ( | llvm::Metadata * | MD | ) |

Generate a cross-DSO type identifier for MD.

Definition at line 1159 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypeCache::Int64Ty.

Referenced by AddVTableTypeMetadata(), CreateFunctionTypeMetadataForIcall(), and clang::CodeGen::CodeGenFunction::EmitCall().

## ◆ CreateFunctionTypeMetadataForIcall()

void CodeGenModule::CreateFunctionTypeMetadataForIcall | ( | const FunctionDecl * | FD,
|  | llvm::Function * | F
| ) |  |

Create and attach type metadata to the given function.

Definition at line 1505 of file CodeGenModule.cpp.

References CreateCrossDsoCfiTypeId(), CreateMetadataIdentifierForType(), CreateMetadataIdentifierGeneralized(), clang::Decl::getAttr(), getCodeGenOpts(), getContext(), getCXXABI(), clang::DeclarationName::getCXXOverloadedOperator(), clang::GlobalDecl::getDecl(), clang::NamedDecl::getDeclName(), clang::ASTContext::GetGVALinkageForFunction(), getLangOpts(), getLLVMContext(), getOpenMPRuntime(), getTargetCodeGenInfo(), getTriple(), clang::ValueDecl::getType(), getTypes(), clang::GVA_AvailableExternally, clang::SanitizerSet::has(), clang::Decl::hasAttr(), clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), clang::LangOptions::Sanitize, setGVProperties(), setLinkageForGV(), SetLLVMFunctionAttributes(), and clang::CodeGen::TargetCodeGenInfo::setTargetAttributes().

Referenced by SetLLVMFunctionAttributesForDefinition().

## ◆ CreateGlobalInitOrDestructFunction()

llvm::Function * CodeGenModule::CreateGlobalInitOrDestructFunction | ( | llvm::FunctionType * | ty,
|  | const Twine & | name,
|  | const CGFunctionInfo & | FI,
|  | SourceLocation | Loc = `SourceLocation()`,
|  | bool | TLS = `false`
| ) |  |

Definition at line 324 of file CGDeclCXX.cpp.

Referenced by clang::CodeGen::CodeGenFunction::createAtExitStub(), clang::CodeGen::emitDeclareTargetVarDefinition(), emitGlobalDtorWithTLRegDtor(), clang::CodeGen::CodeGenFunction::generateDestroyHelper(), and getThreadLocalWrapperLinkage().

## ◆ CreateMetadataIdentifierForType()

llvm::Metadata * CodeGenModule::CreateMetadataIdentifierForType | ( | QualType | T | ) |

Create a metadata identifier for the given type.

This may either be an MDString (for external identifiers) or a distinct unnamed MDNode (for internal identifiers).

Definition at line 5364 of file CodeGenModule.cpp.

Referenced by AddVTableTypeMetadata(), CreateFunctionTypeMetadataForIcall(), clang::CodeGen::CodeGenFunction::EmitCall(), and SetLLVMFunctionAttributesForDefinition().

## ◆ CreateMetadataIdentifierForVirtualMemPtrType()

llvm::Metadata * CodeGenModule::CreateMetadataIdentifierForVirtualMemPtrType | ( | QualType | T | ) |

Create a metadata identifier that is intended to be used to check virtual calls via a member function pointer.

Definition at line 5369 of file CodeGenModule.cpp.

## ◆ CreateMetadataIdentifierGeneralized()

llvm::Metadata * CodeGenModule::CreateMetadataIdentifierGeneralized | ( | QualType | T | ) |

Create a metadata identifier for the generalization of the given type.

This may either be an MDString (for external identifiers) or a distinct unnamed MDNode (for internal identifiers).

Definition at line 5405 of file CodeGenModule.cpp.

References GeneralizeFunctionType(), and getContext().

Referenced by CreateFunctionTypeMetadataForIcall(), and clang::CodeGen::CodeGenFunction::EmitCall().

## ◆ createOpenCLIntToSamplerConversion()

llvm::Value * CodeGenModule::createOpenCLIntToSamplerConversion | ( | const Expr * | E,
|  | CodeGenFunction & | CGF
| ) |  |

Definition at line 5501 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenFunction::Builder, CreateRuntimeFunction(), clang::CodeGen::ConstantEmitter::emitAbstract(), getOpenCLRuntime(), clang::CodeGen::CGOpenCLRuntime::getSamplerType(), clang::Expr::getType(), and clang::QualType::getTypePtr().

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

## ◆ CreateOrReplaceCXXRuntimeVariable()

llvm::GlobalVariable * CodeGenModule::CreateOrReplaceCXXRuntimeVariable | ( | StringRef | Name,
|  | llvm::Type * | Ty,
|  | llvm::GlobalValue::LinkageTypes | Linkage,
|  | unsigned | Alignment
| ) |  |

Will return a global variable of the given type.

If a variable with a different type already exists then a new variable with the right type will be created and all uses of the old variable will be replaced with a bitcast to the new variable.

Definition at line 3235 of file CodeGenModule.cpp.

## ◆ CreateRuntimeFunction()

llvm::Constant * CodeGenModule::CreateRuntimeFunction | ( | llvm::FunctionType * | FTy,
|  | StringRef | Name,
|  | llvm::AttributeList | ExtraAttrs = `llvm::AttributeList()`,
|  | bool | Local = `false`
| ) |  |

Create a new runtime function with the specified type and name.

CreateRuntimeFunction - Create a new runtime function with the specified type and name.

Definition at line 2957 of file CodeGenModule.cpp.

Referenced by clang::CodeGen::CGOpenMPRuntimeNVPTX::createNVPTXRuntimeFunction(), createOpenCLIntToSamplerConversion(), clang::CodeGen::createRuntimeFunction(), emitAtomicLibcall(), clang::CodeGen::CodeGenFunction::EmitBuiltinAvailable(), emitCheckHandlerCall(), emitGlobalDtorWithCXAAtExit(), emitGlobalDtorWithTLRegDtor(), clang::CodeGen::CodeGenFunction::emitImplicitAssignmentOperatorBody(), clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolPop(), clang::CodeGen::CodeGenFunction::EmitObjCRelease(), emitObjCValueOperation(), emitRTtypeidCall(), clang::CodeGen::CodeGenVTables::EmitThunks(), getAllocateExceptionFn(), getBadCastFn(), getBadTypeidFn(), getBeginCatchFn(), getClangCallTerminateFn(), getEndCatchFn(), getFreeExceptionFn(), getGetExceptionPtrFn(), getGuardAbortFn(), getGuardAcquireFn(), getGuardReleaseFn(), getInitThreadAbortFn(), getInitThreadFooterFn(), getInitThreadHeaderFn(), getItaniumDynamicCastFn(), getPersonalityFn(), getTerminateFn(), getThrowFn(), getUnexpectedFn(), and clang::CodeGen::CodeGenFunction::registerGlobalDtorWithAtExit().

## ◆ CreateRuntimeVariable()

llvm::Constant * CodeGenModule::CreateRuntimeVariable | ( | llvm::Type * | Ty,
|  | StringRef | Name
| ) |  |

Create a new runtime global variable with the specified type and name.

CreateRuntimeVariable - Create a new runtime global variable with the specified type and name.

Definition at line 3302 of file CodeGenModule.cpp.

Referenced by emitGlobalDtorWithCXAAtExit(), clang::CodeGen::CodeGenFunction::EmitTypeCheck(), GetAddrOfConstantCFString(), and GetConstantStringEntry().

## ◆ DecorateInstructionWithInvariantGroup()

void CodeGenModule::DecorateInstructionWithInvariantGroup | ( | llvm::Instruction * | I,
|  | const CXXRecordDecl * | RD
| ) |  |

Adds !invariant.barrier !tag to instruction.

Definition at line 689 of file CodeGenModule.cpp.

References getLLVMContext().

## ◆ DecorateInstructionWithTBAA()

void CodeGenModule::DecorateInstructionWithTBAA | ( | llvm::Instruction * | Inst,
|  | TBAAAccessInfo | TBAAInfo
| ) |  |

DecorateInstructionWithTBAA - Decorate the instruction with a TBAA tag.

Definition at line 683 of file CodeGenModule.cpp.

References getTBAAAccessTagInfo().

Referenced by clang::CodeGen::CodeGenFunction::EmitLoadOfReference(), clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(), and clang::CodeGen::CodeGenFunction::EmitStoreOfScalar().

## ◆ EmitAnnotateAttr()

llvm::Constant * CodeGenModule::EmitAnnotateAttr | ( | llvm::GlobalValue * | GV,
|  | const AnnotateAttr * | AA,
|  | SourceLocation | L
| ) |  |

Generate the llvm::ConstantStruct which contains the annotation information for a given GlobalValue.

The annotation struct is {i8 *, i8 *, i8 *, i32}. The first field is a constant expression, the GlobalValue being annotated. The second field is the constant string created from the AnnotateAttr's annotation. The third field is a constant string containing the name of the translation unit. The fourth field is the line number in the file of the annotated value declaration.

Definition at line 1924 of file CodeGenModule.cpp.

References EmitAnnotationLineNo(), EmitAnnotationString(), EmitAnnotationUnit(), and clang::CodeGen::CodeGenTypeCache::Int8PtrTy.

Referenced by AddGlobalAnnotations().

## ◆ EmitAnnotationLineNo()

llvm::Constant * CodeGenModule::EmitAnnotationLineNo | ( | SourceLocation | L | ) |

Emit the annotation line number.

Definition at line 1916 of file CodeGenModule.cpp.

References getContext(), clang::SourceManager::getExpansionLineNumber(), clang::PresumedLoc::getLine(), clang::SourceManager::getPresumedLoc(), clang::ASTContext::getSourceManager(), clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::PresumedLoc::isValid(), and SM.

Referenced by EmitAnnotateAttr(), and clang::CodeGen::CodeGenFunction::EmitAnnotationCall().

## ◆ EmitAnnotationString()

llvm::Constant * CodeGenModule::EmitAnnotationString | ( | StringRef | Str | ) |

Emit an annotation string.

Definition at line 1892 of file CodeGenModule.cpp.

References getLLVMContext(), and getModule().

Referenced by EmitAnnotateAttr(), clang::CodeGen::CodeGenFunction::EmitAnnotationCall(), and EmitAnnotationUnit().

## ◆ EmitAnnotationUnit()

llvm::Constant * CodeGenModule::EmitAnnotationUnit | ( | SourceLocation | Loc | ) |

Emit the annotation's translation unit.

Definition at line 1908 of file CodeGenModule.cpp.

References EmitAnnotationString(), clang::SourceManager::getBufferName(), getContext(), clang::PresumedLoc::getFilename(), clang::SourceManager::getPresumedLoc(), clang::ASTContext::getSourceManager(), clang::PresumedLoc::isValid(), and SM.

Referenced by EmitAnnotateAttr(), and clang::CodeGen::CodeGenFunction::EmitAnnotationCall().

## ◆ EmitDeferredUnusedCoverageMappings()

void CodeGenModule::EmitDeferredUnusedCoverageMappings | ( |  | ) |

Emit all the deferred coverage mappings for the uninstrumented functions.

Definition at line 5091 of file CodeGenModule.cpp.

References clang::Ctor_Base, clang::Dtor_Base, clang::CodeGen::CodeGenPGO::emitEmptyCounterMapping(), clang::XRayInstrKind::Function, getFunctionLinkage(), clang::Decl::getKind(), and getMangledName().

Referenced by Release().

## ◆ EmitExplicitCastExprType()

void CodeGenModule::EmitExplicitCastExprType | ( | const ExplicitCastExpr * | E,
|  | CodeGenFunction * | CGF = `nullptr`
| ) |  |

Emit type info if type of an expression is a variably modified type.

Also emit proper debug info for cast types.

Definition at line 1013 of file CGExpr.cpp.

References clang::CodeGen::CodeGenFunction::EmitVariablyModifiedType(), clang::Expr::getType(), and clang::Type::isVariablyModifiedType().

Referenced by clang::CodeGen::CodeGenFunction::EmitCastLValue(), clang::CodeGen::CodeGenFunction::EmitPointerWithAlignment(), and findPeephole().

## ◆ EmitGlobal()

void CodeGenModule::EmitGlobal | ( | GlobalDecl | D | ) |

Emit code for a single global function or var decl.

Forward declarations are emitted lazily.

Definition at line 2123 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypes::arrangeGlobalDeclaration(), clang::frontend::CPlusPlus, clang::VarDecl::Definition, clang::FunctionDecl::doesDeclarationForceExternallyVisibleDefinition(), clang::FunctionDecl::doesThisDeclarationHaveABody(), EmitOMPDeclareReduction(), GetAddrOfGlobalVar(), clang::GlobalDecl::getDecl(), clang::CodeGen::CodeGenTypes::GetFunctionType(), GetGlobalValue(), clang::ASTContext::getInlineVariableDefinitionKind(), getLangOpts(), getMangledName(), getOpenMPRuntime(), getTypes(), clang::Decl::hasAttr(), clang::ASTContext::isMSStaticDataMemberInlineDefinition(), clang::ASTContext::Strong, and clang::CodeGen::Type.

Referenced by clang::CodeGen::emitDeferredTargetDecls(), and EmitTopLevelDecl().

## ◆ EmitGlobalAnnotations()

void CodeGenModule::EmitGlobalAnnotations | ( |  | ) |

Emit all the global annotations.

Definition at line 1879 of file CodeGenModule.cpp.

References getModule().

Referenced by Release().

## ◆ EmitNullConstant()

llvm::Constant * CodeGenModule::EmitNullConstant | ( | QualType | T | ) |

Return the result of value-initializing the given type, i.e.

a null expression of the given type. This is usually, but not always, an LLVM null constant.

Definition at line 2143 of file CGExprConstant.cpp.

References clang::Type::castAs(), EmitNullConstant(), clang::CodeGen::ConstantEmitter::emitNullForMemory(), clang::Type::getAs(), clang::ASTContext::getAsConstantArrayType(), clang::RecordType::getDecl(), clang::ArrayType::getElementType(), clang::ConstantArrayType::getSize(), and clang::Type::isMemberDataPointerType().

Referenced by clang::CodeGen::ConstantEmitter::emitAbstract(), emitInitWithReductionInitializer(), clang::CodeGen::CodeGenFunction::EmitMaterializeTemporaryExpr(), EmitNullConstant(), clang::CodeGen::ConstantEmitter::emitNullForMemory(), clang::CodeGen::CodeGenFunction::EmitNullInitialization(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), isSimpleZero(), maybeSetTrivialComdat(), and clang::CodeGen::ConstantEmitter::tryEmitPrivateForVarInit().

## ◆ EmitNullConstantForBase()

llvm::Constant * CodeGenModule::EmitNullConstantForBase | ( | const CXXRecordDecl * | Record | ) |

Return a null constant appropriate for zero-initializing a base class with the given type.

This is usually, but not always, an LLVM null constant.

Definition at line 2174 of file CGExprConstant.cpp.

References EmitNullConstant().

Referenced by EmitNullBaseClassInitialization().

## ◆ EmitOMPDeclareReduction()

void CodeGenModule::EmitOMPDeclareReduction | ( | const OMPDeclareReductionDecl * | D,
|  | CodeGenFunction * | CGF = `nullptr`
| ) |  |

Emit a code for declare reduction construct.

Definition at line 2413 of file CGDecl.cpp.

References clang::Decl::isUsed().

Referenced by clang::CodeGen::CodeGenFunction::EmitDecl(), and EmitGlobal().

## ◆ EmitOMPRequiresDecl()

void CodeGenModule::EmitOMPRequiresDecl | ( | const OMPRequiresDecl * | D | ) |

Emit a code for requires directive.

Parameters

  D | Requires declaration

Definition at line 2420 of file CGDecl.cpp.

## ◆ EmitOMPThreadPrivateDecl()

void CodeGenModule::EmitOMPThreadPrivateDecl | ( | const OMPThreadPrivateDecl * | D | ) |

Emit a code for threadprivate directive.

Parameters

  D | Threadprivate declaration.

Definition at line 5324 of file CodeGenModule.cpp.

References clang::CodeGen::emitThreadPrivateVarDefinition(), GetAddrOfGlobalVar(), clang::QualType::getCanonicalType(), getContext(), getCXXABI(), getDeclAlign(), clang::Type::getLinkage(), getLLVMContext(), clang::CodeGen::CGCXXABI::getMangleContext(), getOpenMPRuntime(), clang::isExternallyVisible(), clang::MangleContext::mangleTypeName(), and clang::OMPThreadPrivateDecl::varlists().

## ◆ EmitTentativeDefinition()

void CodeGenModule::EmitTentativeDefinition | ( | const VarDecl * | D | ) |

Definition at line 3310 of file CodeGenModule.cpp.

References GetGlobalValue(), clang::VarDecl::getInit(), and getMangledName().

## ◆ EmitTopLevelDecl()

void CodeGenModule::EmitTopLevelDecl | ( | Decl * | D | ) |

Emit code for a single top level declaration.

EmitTopLevelDecl - Emit code for a single top level declaration.

Definition at line 4804 of file CodeGenModule.cpp.

References AddDeferredUnusedCoverageMapping(), AddDependentLib(), AddDetectMismatch(), AddELFLibDirective(), AppendLinkerOptions(), clang::ExternalASTSource::EK_Never, clang::CodeGen::CGCXXABI::EmitCXXConstructors(), clang::CodeGen::CGCXXABI::EmitCXXDestructors(), EmitGlobal(), clang::XRayInstrKind::Function, clang::CodeGen::CodeGenFunction::GenerateObjCMethod(), clang::Decl::getASTContext(), getCodeGenOpts(), getContext(), getCXXABI(), clang::ASTContext::getExternalSource(), clang::Decl::getKind(), getModule(), getModuleDebugInfo(), getTarget(), clang::TargetInfo::getTriple(), clang::Decl::isTemplated(), clang::codegenoptions::LimitedDebugInfo, clang::PCK_Compiler, clang::PCK_ExeStr, clang::PCK_Lib, clang::PCK_Linker, clang::PCK_Unknown, clang::PCK_User, and clang::TSK_ExplicitInstantiationDefinition.

Referenced by AllTrivialInitializers(), and HandleCXXStaticMemberVarInstantiation().

## ◆ EmitVTable()

void CodeGenModule::EmitVTable | ( | CXXRecordDecl * | theClass | ) |

This is a callback from Sema to tell us that a particular vtable is required to be emitted in this translation unit.

This is only called for vtables that must be emitted (mainly due to key functions). For weak vtables, CodeGen tracks when they are needed and emits them as-needed.

Definition at line 884 of file CGVTables.cpp.

## ◆ EmitVTableTypeMetadata()

void CodeGenModule::EmitVTableTypeMetadata | ( | llvm::GlobalVariable * | VTable,
|  | const VTableLayout & | VTLayout
| ) |  |

Emit type metadata for the given vtable using the given layout.

Definition at line 1008 of file CGVTables.cpp.

## ◆ Error()

void CodeGenModule::Error | ( | SourceLocation | loc,
|  | StringRef | error
| ) |  |

Emit a general error that something can't be done.

Definition at line 695 of file CodeGenModule.cpp.

References clang::DiagnosticsEngine::Error, clang::DiagnosticsEngine::getCustomDiagID(), getDiags(), clang::ASTContext::getFullLoc(), and clang::DiagnosticsEngine::Report().

Referenced by clang::CodeGen::CGOpenMPRuntimeNVPTX::checkArchForUnifiedAddressing(), createCoroData(), clang::CodeGen::ConstantEmitter::emitAbstract(), clang::CodeGen::CodeGenFunction::EmitCXXGuardedInit(), getAliasedGlobal(), and getBundlesForCoroEnd().

## ◆ ErrorUnsupported() [1/2]

void CodeGenModule::ErrorUnsupported | ( | const Stmt * | S,
|  | const char * | Type
| ) |  |

Print out an error that codegen doesn't support the specified stmt yet.

ErrorUnsupported - Print out an error that codegen doesn't support the specified stmt yet.

Definition at line 702 of file CodeGenModule.cpp.

Referenced by clang::CodeGen::CodeGenFunction::AddInitializerToStaticVarDecl(), AddVariableConstraints(), AllTrivialInitializers(), clang::CodeGen::CodeGenFunction::EmitCallAndReturnForThunk(), emitGlobalDtorWithTLRegDtor(), clang::CodeGen::CodeGenFunction::EmitNVPTXDevicePrintfCallExpr(), findPeephole(), clang::CodeGen::CodeGenFunction::generateObjCGetterBody(), clang::CodeGen::CodeGenFunction::generateObjCSetterBody(), and maybeSetTrivialComdat().

## ◆ ErrorUnsupported() [2/2]

void CodeGenModule::ErrorUnsupported | ( | const Decl * | D,
|  | const char * | Type
| ) |  |

Print out an error that codegen doesn't support the specified decl yet.

ErrorUnsupported - Print out an error that codegen doesn't support the specified decl yet.

Definition at line 712 of file CodeGenModule.cpp.

References clang::DiagnosticsEngine::Error, clang::DiagnosticsEngine::getCustomDiagID(), getDiags(), clang::ASTContext::getFullLoc(), clang::Decl::getLocation(), clang::DiagnosticsEngine::Report(), and clang::CodeGen::Type.

## ◆ filterFunctionTargetAttrs()

TargetAttr::ParsedTargetAttr CodeGenModule::filterFunctionTargetAttrs | ( | const TargetAttr * | TD | ) |

Parses the target attributes passed in, and returns only the ones that are valid feature names.

Definition at line 5442 of file CodeGenModule.cpp.

Referenced by clang::CodeGen::CodeGenFunction::checkTargetFeatures(), and getFunctionFeatureMap().

## ◆ GetAddrOfConstantCFString()

ConstantAddress CodeGenModule::GetAddrOfConstantCFString | ( | const StringLiteral * | Literal | ) |

Return a pointer to a constant CFString object for the given string.

Definition at line 4208 of file CodeGenModule.cpp.

References clang::TranslationUnitDecl::castToDeclContext(), clang::LangOptions::CFRuntime, clang::CodeGen::CodeGenTypes::ConvertType(), CreateRuntimeVariable(), clang::ExternalLinkage, clang::CharUnits::fromQuantity(), clang::IdentifierTable::get(), clang::ASTContext::getCFConstantStringType(), GetConstantCFStringEntry(), getContext(), getDataLayout(), getLangOpts(), clang::ASTContext::getTranslationUnitDecl(), getTriple(), getTypes(), clang::Decl::hasAttr(), clang::ASTContext::Idents, clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::CodeGen::CodeGenTypeCache::IntPtrTy, clang::CodeGen::CodeGenTypeCache::IntTy, clang::DeclContext::lookup(), setDSOLocal(), clang::LangOptions::Swift, clang::LangOptions::Swift4_1, clang::LangOptions::Swift4_2, clang::LangOptions::Swift5_0, and clang::CodeGen::Type.

## ◆ GetAddrOfConstantCompoundLiteral()

ConstantAddress CodeGenModule::GetAddrOfConstantCompoundLiteral | ( | const CompoundLiteralExpr * | E | ) |

Returns a pointer to a constant global variable for the given file-scope compound literal expression.

Definition at line 2015 of file CGExprConstant.cpp.

References clang::CompoundLiteralExpr::isFileScope().

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

## ◆ getAddrOfConstantCompoundLiteralIfEmitted()

llvm::GlobalVariable * CodeGenModule::getAddrOfConstantCompoundLiteralIfEmitted | ( | const CompoundLiteralExpr * | E | ) |

If it's been emitted already, returns the GlobalVariable corresponding to a compound literal.

Otherwise, returns null.

Definition at line 2002 of file CGExprConstant.cpp.

## ◆ GetAddrOfConstantCString()

ConstantAddress CodeGenModule::GetAddrOfConstantCString | ( | const std::string & | Str,
|  | const char * | GlobalName = `nullptr`
| ) |  |

Returns a pointer to a character array containing the literal and a terminating '\0' character.

GetAddrOfConstantCString - Returns a pointer to a character array containing the literal and a terminating '\0' character.

The result has pointer to array type.

Parameters

  GlobalName | If provided, the name to use for the global (if one is created).

The result has pointer to array type.

Definition at line 4553 of file CodeGenModule.cpp.

References castStringLiteralToDefaultAddressSpace(), GenerateStringLiteral(), clang::ASTContext::getAlignOfGlobalVarInChars(), getContext(), and getLLVMContext().

Referenced by buildBlockDescriptor(), createConstantGlobalStructAndAddToParent(), clang::CodeGen::CodeGenFunction::EmitCheckSourceLocation(), clang::CodeGen::CodeGenFunction::EmitObjCBoxedExpr(), GetAddrOfConstantStringFromObjCEncode(), and getBlockLayoutInfoString().

## ◆ GetAddrOfConstantString()

ConstantAddress clang::CodeGen::CodeGenModule::GetAddrOfConstantString | ( | const StringLiteral * | Literal | ) |

Return a pointer to a constant NSString object for the given string.

Or a user defined String object as defined via -fconstant-string-class=class_name option.

## ◆ GetAddrOfConstantStringFromLiteral()

ConstantAddress CodeGenModule::GetAddrOfConstantStringFromLiteral | ( | const StringLiteral * | S,
|  | StringRef | Name = `".str"`
| ) |  |

Return a pointer to a constant array for the given string literal.

GetAddrOfConstantStringFromLiteral - Return a pointer to a constant array for the given string literal.

Definition at line 4496 of file CodeGenModule.cpp.

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

## ◆ GetAddrOfConstantStringFromObjCEncode()

ConstantAddress CodeGenModule::GetAddrOfConstantStringFromObjCEncode | ( | const ObjCEncodeExpr * | E | ) |

Return a pointer to a constant array for the given ObjCEncodeExpr node.

GetAddrOfConstantStringFromObjCEncode - Return a pointer to a constant array for the given ObjCEncodeExpr node.

Definition at line 4543 of file CodeGenModule.cpp.

References GetAddrOfConstantCString(), getContext(), clang::ObjCEncodeExpr::getEncodedType(), and clang::ASTContext::getObjCEncodingForType().

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

## ◆ getAddrOfCXXStructor()

llvm::Constant * CodeGenModule::getAddrOfCXXStructor | ( | const CXXMethodDecl * | MD,
|  | StructorType | Type,
|  | const CGFunctionInfo * | FnInfo = `nullptr`,
|  | llvm::FunctionType * | FnType = `nullptr`,
|  | bool | DontDefer = `false`,
|  | ForDefinition_t | IsForDefinition = `NotForDefinition`
| ) |  |

Return the address of the constructor/destructor of the given type.

Definition at line 231 of file CGCXX.cpp.

References clang::CodeGen::CodeGenTypes::arrangeCXXStructorDeclaration(), clang::CodeGen::Base, clang::CodeGen::Complete, getCXXABI(), clang::CodeGen::CodeGenTypes::GetFunctionType(), getMangledName(), clang::CXXRecordDecl::getNumVBases(), clang::CXXMethodDecl::getParent(), getTarget(), getTypes(), clang::CodeGen::toCXXCtorType(), and clang::CodeGen::toCXXDtorType().

Referenced by codegenCXXStructor(), emitCXXDestructor(), EmitDeclDestroy(), GetAddrOfGlobal(), and pushTemporaryCleanup().

## ◆ GetAddrOfFunction()

llvm::Constant * CodeGenModule::GetAddrOfFunction | ( | GlobalDecl | GD,
|  | llvm::Type * | Ty = `nullptr`,
|  | bool | ForVTable = `false`,
|  | bool | DontDefer = `false`,
|  | ForDefinition_t | IsForDefinition = `NotForDefinition`
| ) |  |

Return the address of the given function.

GetAddrOfFunction - Return the address of the given function.

If Ty is non-null, then this function will use the specified type if it has to create it.

If Ty is non-null, then this function will use the specified type if it has to create it (this occurs when we see a definition of the function).

Definition at line 2888 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypes::ConvertFunctionType(), clang::Dtor_Base, clang::Dtor_Complete, clang::ASTContext::getCanonicalType(), clang::TargetInfo::getCXXABI(), clang::GlobalDecl::getDecl(), clang::GlobalDecl::getDtorType(), getMangledName(), getTarget(), clang::ValueDecl::getType(), getTypes(), and clang::TargetCXXABI::isMicrosoft().

Referenced by clang::CodeGen::CodeGenFunction::EmitAutoVarCleanups(), EmitFunctionDeclPointer(), EmitNewDeleteCall(), clang::CodeGen::CodeGenVTables::EmitThunks(), clang::CodeGen::CodeGenFunction::generateThunk(), clang::CodeGen::CodeGenFunction::GenerateVarArgsThunk(), GetAddrOfGlobal(), and HandleCXXStaticMemberVarInstantiation().

## ◆ GetAddrOfGlobal()

llvm::Constant * CodeGenModule::GetAddrOfGlobal | ( | GlobalDecl | GD,
|  | ForDefinition_t | IsForDefinition = `NotForDefinition`
| ) |  |

Definition at line 3206 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypes::arrangeCXXMethodDeclaration(), clang::CodeGen::CodeGenTypes::arrangeGlobalDeclaration(), getAddrOfCXXStructor(), GetAddrOfFunction(), GetAddrOfGlobalVar(), clang::GlobalDecl::getCtorType(), clang::GlobalDecl::getDecl(), clang::GlobalDecl::getDtorType(), clang::CodeGen::getFromCtorType(), clang::CodeGen::getFromDtorType(), clang::CodeGen::CodeGenTypes::GetFunctionType(), and getTypes().

Referenced by emitConstructorDestructorAlias(), clang::CodeGen::getAddrOfDeclareTargetLink(), and TryEmitBaseDestructorAsAlias().

## ◆ GetAddrOfGlobalBlock()

llvm::Constant * CodeGenModule::GetAddrOfGlobalBlock | ( | const BlockExpr * | BE,
|  | StringRef | Name
| ) |  |

Gets the address of a block which requires no captures.

Definition at line 1371 of file CGBlocks.cpp.

References clang::CodeGen::CGBlockInfo::Block, clang::CodeGen::CGBlockInfo::BlockExpression, computeBlockInfo(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), clang::BlockExpr::getBlockDecl(), and clang::CodeGen::CGBlockInfo::Name.

## ◆ getAddrOfGlobalBlockIfEmitted()

llvm::Constant* clang::CodeGen::CodeGenModule::getAddrOfGlobalBlockIfEmitted | ( | const BlockExpr * | BE | ) |
| inline

Returns the address of a block which requires no caputres, or null if we've yet to emit the block for BE.

Definition at line 890 of file CodeGenModule.h.

Referenced by buildGlobalBlock(), and clang::CodeGen::CodeGenFunction::EmitBlockLiteral().

## ◆ GetAddrOfGlobalTemporary()

ConstantAddress CodeGenModule::GetAddrOfGlobalTemporary | ( | const MaterializeTemporaryExpr * | E,
|  | const Expr * | Inner
| ) |  |

Returns a pointer to a global variable representing a temporary with static or thread storage duration.

Definition at line 4586 of file CodeGenModule.cpp.

References getContext(), clang::MaterializeTemporaryExpr::getExtendingDecl(), clang::MaterializeTemporaryExpr::getStorageDuration(), clang::MaterializeTemporaryExpr::GetTemporaryExpr(), clang::Expr::getType(), clang::ASTContext::getTypeAlignInChars(), clang::SD_Static, and clang::SD_Thread.

## ◆ GetAddrOfGlobalVar()

llvm::Constant * CodeGenModule::GetAddrOfGlobalVar | ( | const VarDecl * | D,
|  | llvm::Type * | Ty = `nullptr`,
|  | ForDefinition_t | IsForDefinition = `NotForDefinition`
| ) |  |

Return the llvm::Constant for the address of the given global variable.

GetAddrOfGlobalVar - Return the llvm::Constant for the address of the given global variable.

If Ty is non-null and if the global doesn't exist, then it will be created with the specified type instead of whatever the normal requested type would be. If IsForDefinition is true, it is guaranteed that an actual global with type Ty will be returned, not conversion of a variable with the same mangled name but some other type.

Definition at line 3284 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypes::ConvertTypeForMem(), getContext(), getMangledName(), clang::ValueDecl::getType(), getTypes(), and clang::VarDecl::hasGlobalStorage().

Referenced by EmitGlobal(), EmitGlobalVarDeclLValue(), EmitOMPThreadPrivateDecl(), GetAddrOfGlobal(), HandleCXXStaticMemberVarInstantiation(), isTypeConstant(), and maybeSetTrivialComdat().

## ◆ GetAddrOfRTTIDescriptor()

llvm::Constant * CodeGenModule::GetAddrOfRTTIDescriptor | ( | QualType | Ty,
|  | bool | ForEH = `false`
| ) |  |

Get the address of the RTTI descriptor for the given type.

Definition at line 5309 of file CodeGenModule.cpp.

References clang::CodeGen::CGCXXABI::getAddrOfRTTIDescriptor(), getCXXABI(), getLangOpts(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, and clang::Type::isObjCObjectPointerType().

Referenced by detectAmbiguousBases(), clang::CodeGen::CodeGenFunction::EmitCall(), emitRTtypeidCall(), clang::CodeGen::CodeGenFunction::EmitTypeCheck(), getBadTypeidFn(), and clang::CodeGen::CodeGenFunction::StartFunction().

## ◆ GetAddrOfThunk()

llvm::Constant * CodeGenModule::GetAddrOfThunk | ( | StringRef | Name,
|  | llvm::Type * | FnTy,
|  | GlobalDecl | GD
| ) |  |

Get the address of the thunk for the given global decl.

Definition at line 34 of file CGVTables.cpp.

## ◆ GetAddrOfUuidDescriptor()

ConstantAddress CodeGenModule::GetAddrOfUuidDescriptor | ( | const CXXUuidofExpr * | E | ) |

Get the address of a uuid descriptor .

Definition at line 2064 of file CodeGenModule.cpp.

References clang::CXXUuidofExpr::getUuidStr().

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

## ◆ getAtomicGetterHelperFnMap()

llvm::Constant* clang::CodeGen::CodeGenModule::getAtomicGetterHelperFnMap | ( | QualType | Ty | ) |
| inline

Definition at line 629 of file CodeGenModule.h.

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

## ◆ getAtomicSetterHelperFnMap()

llvm::Constant* clang::CodeGen::CodeGenModule::getAtomicSetterHelperFnMap | ( | QualType | Ty | ) |
| inline

Definition at line 621 of file CodeGenModule.h.

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

## ◆ getBlockDescriptorType()

llvm::Type * CodeGenModule::getBlockDescriptorType | ( |  | ) |

Fetches the type of a generic block descriptor.

Definition at line 1191 of file CGBlocks.cpp.

References clang::serialized_diags::create(), clang::opencl_constant, and clang::CodeGen::Type.

Referenced by buildBlockDescriptor(), and initializeForBlockHeader().

## ◆ getBlockMangledName()

StringRef CodeGenModule::getBlockMangledName | ( | GlobalDecl | GD,
|  | const BlockDecl * | BD
| ) |  |

Definition at line 1055 of file CodeGenModule.cpp.

References clang::GlobalDecl::getCtorType(), getCXXABI(), clang::GlobalDecl::getDecl(), clang::GlobalDecl::getDtorType(), clang::CodeGen::CGCXXABI::getMangleContext(), clang::MangleContext::mangleBlock(), clang::MangleContext::mangleCtorBlock(), clang::MangleContext::mangleDtorBlock(), and clang::MangleContext::mangleGlobalBlock().

Referenced by clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), and getStaticDeclName().

## ◆ getBlockObjectAssign()

llvm::Constant * CodeGenModule::getBlockObjectAssign | ( |  | ) |

Definition at line 3004 of file CGBlocks.cpp.

References configureBlocksRuntimeObject(), and clang::CodeGen::Type.

## ◆ getBlockObjectDispose()

llvm::Constant * CodeGenModule::getBlockObjectDispose | ( |  | ) |

Definition at line 2992 of file CGBlocks.cpp.

References configureBlocksRuntimeObject(), and clang::CodeGen::Type.

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

## ◆ getBuiltinLibFunction()

llvm::Constant * CodeGenModule::getBuiltinLibFunction | ( | const FunctionDecl * | FD,
|  | unsigned | BuiltinID
| ) |  |

Given a builtin id for a function like "__builtin_fabsf", return a Function* for "fabsf".

getBuiltinLibFunction - Given a builtin id for a function like "__builtin_fabsf", return a Function* for "fabsf".

Definition at line 51 of file CGBuiltin.cpp.

## ◆ getClassPointerAlignment()

CharUnits CodeGenModule::getClassPointerAlignment | ( | const CXXRecordDecl * | RD | ) |

Returns the assumed alignment of an opaque pointer to the given class.

Return the best known alignment for an unknown pointer to a particular class.

Definition at line 37 of file CGClass.cpp.

References clang::ASTRecordLayout::getAlignment(), clang::ASTContext::getASTRecordLayout(), getContext(), clang::Decl::hasAttr(), clang::TagDecl::isCompleteDefinition(), and clang::CharUnits::One().

Referenced by clang::CodeGen::CodeGenFunction::GenerateVarArgsThunk(), clang::CodeGen::CodeGenFunction::getNaturalTypeAlignment(), InitCatchParam(), and PerformReturnAdjustment().

## ◆ getCodeGenOpts()

const CodeGenOptions& clang::CodeGen::CodeGenModule::getCodeGenOpts | ( |  | ) | const
| inline

Definition at line 658 of file CodeGenModule.h.

Referenced by clang::CodeGen::CodeGenFunction::AlwaysEmitXRayCustomEvents(), clang::CodeGen::CodeGenFunction::AlwaysEmitXRayTypedEvents(), clang::CodeGen::CGDebugInfo::CGDebugInfo(), CreateFunctionTypeMetadataForIcall(), clang::CodeGen::CodeGenFunction::EmitARCDestroyStrong(), clang::CodeGen::CodeGenFunction::EmitARCInitWeak(), emitAutoreleasedReturnValueMarker(), clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(), clang::CodeGen::CodeGenFunction::EmitBranchOnBoolExpr(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitCfiSlowPathCheck(), clang::CodeGen::CodeGenFunction::EmitCheck(), emitCheckHandlerCall(), clang::CodeGen::CodeGenFunction::EmitCheckSourceLocation(), clang::CodeGen::CodeGenFunction::EmitCXXGuardedInit(), EmitDeclDestroy(), clang::CodeGen::CodeGenFunction::EmitDeclRefExprDbgValue(), clang::CodeGen::CodeGenFunction::EmitInvariantStart(), clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), clang::CodeGen::CodeGenFunction::EmitMaterializeTemporaryExpr(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), clang::CodeGen::CodeGenFunction::EmitSanitizerStatReport(), clang::CodeGen::CodeGenFunction::EmitStaticVarDecl(), clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(), EmitTopLevelDecl(), clang::CodeGen::CodeGenFunction::EmitTrapCall(), clang::CodeGen::CodeGenFunction::EmitTrapCheck(), clang::CodeGen::CGOpenMPRuntime::emitUpdateLocation(), emitWritebackArg(), enterBlockScope(), clang::CodeGen::CodeGenFunction::FinishFunction(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), clang::CodeGen::CodeGenFunction::GenerateCode(), clang::CodeGen::CodeGenFunction::getARCCleanupKind(), getBlockDescriptorName(), clang::CodeGen::CodeGenTypes::getCodeGenOpts(), getCodegenToUse(), getCopyDestroyHelperFuncName(), GetIntrinsic(), getRangeForType(), clang::CodeGen::CodeGenFunction::incrementProfileCounter(), lookupRepresentativeDecl(), maybeSetTrivialComdat(), clang::CodeGen::CodeGenFunction::needsEHCleanup(), needsTypeIdentifier(), Release(), requiresMemberFunctionPointerTypeMetadata(), shouldAssumeDSOLocal(), shouldEmitAvailableExternallyVTable(), shouldEmitVTableThunk(), clang::CodeGen::CodeGenFunction::ShouldInstrumentFunction(), clang::CodeGen::CodeGenFunction::ShouldNullCheckClassCastValue(), clang::CodeGen::CodeGenFunction::shouldUseFusedARCCalls(), clang::CodeGen::CodeGenFunction::ShouldXRayInstrumentFunction(), clang::CodeGen::CodeGenFunction::StartFunction(), TryEmitBaseDestructorAsAlias(), tryGenerateSpecializedMessageSend(), and TypeRequiresBuiltinLaunder().

## ◆ GetConstantArrayFromStringLiteral()

llvm::Constant * CodeGenModule::GetConstantArrayFromStringLiteral | ( | const StringLiteral * | E | ) |

Return a constant array for the given string.

Definition at line 4431 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypes::ConvertType(), clang::ASTContext::getAsConstantArrayType(), clang::StringLiteral::getCharByteWidth(), clang::StringLiteral::getCodeUnit(), clang::StringLiteral::getLength(), clang::StringLiteral::getString(), clang::Expr::getType(), getTypes(), clang::Type::isPointerType(), and clang::CodeGen::Type.

## ◆ getContext()

ASTContext& clang::CodeGen::CodeGenModule::getContext | ( |  | ) | const
| inline

Definition at line 652 of file CodeGenModule.h.

Referenced by AddDeferredUnusedCoverageMapping(), clang::CodeGen::CodeGenFunction::AddInitializerToStaticVarDecl(), clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), AllTrivialInitializers(), clang::CodeGen::CodeGenTypes::arrangeCXXConstructorCall(), clang::CodeGen::CodeGenTypes::arrangeCXXStructorDeclaration(), buildBlockDescriptor(), buildByrefHelpers(), clang::CodeGen::CodeGenFunction::BuildFunctionArgList(), buildGlobalBlock(), clang::CodeGen::CGCXXABI::buildThisParam(), CanUseSingleInheritance(), castStringLiteralToDefaultAddressSpace(), clang::CodeGen::CGOpenMPRuntime::CGOpenMPRuntime(), clang::CodeGen::CodeGenFunction::checkTargetFeatures(), classifyType(), clang::CodeGen::CGOpenMPRuntimeNVPTX::clear(), clang::CodeGen::CGObjCRuntime::ComputeBitfieldBitOffset(), computeBlockInfo(), clang::CodeGen::CGObjCRuntime::ComputeIvarBaseOffset(), computeNonVirtualBaseClassOffset(), ComputeVMIClassTypeInfoFlags(), configureBlocksRuntimeObject(), clang::CodeGen::CGCXXABI::ConvertMemberPointerType(), clang::CodeGen::CGOpenCLRuntime::convertOpenCLSpecificType(), clang::CodeGen::CodeGenFunction::createAtExitStub(), createConstantGlobalStructAndAddToParent(), CreateFunctionTypeMetadataForIcall(), clang::CodeGen::CreateItaniumCXXABI(), createKmpTaskTRecordDecl(), createKmpTaskTWithPrivatesRecordDecl(), CreateMetadataIdentifierGeneralized(), clang::CodeGen::CGOpenMPRuntimeNVPTX::createNVPTXRuntimeFunction(), clang::CodeGen::createOffloadingBinaryDescriptorRegistration(), createPrivatesRecordDecl(), clang::CodeGen::createRuntimeFunction(), createUnnamedGlobalFrom(), clang::CodeGen::SanitizerMetadata::disableSanitizerForInstruction(), EmitAnnotationLineNo(), EmitAnnotationUnit(), clang::CodeGen::CodeGenFunction::EmitAsanPrologueOrEpilogue(), clang::CodeGen::CodeGenFunction::EmitBlockLiteral(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitCallAndReturnForThunk(), clang::CodeGen::CodeGenFunction::EmitCfiCheckFail(), emitCombinerOrInitializer(), emitCopyprivateCopyFunction(), clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(), emitCXXDestructor(), clang::CodeGen::emitDeclareSimdFunction(), clang::CodeGen::emitDeclareTargetVarDefinition(), emitDestructorsFunction(), clang::CodeGen::ConstantEmitter::emitForMemory(), EmitFunctionDeclPointer(), clang::CodeGen::CodeGenFunction::EmitInheritedCXXConstructorCall(), emitInterWarpCopyFunction(), clang::CodeGen::emitKmpRoutineEntryT(), clang::CodeGen::CodeGenFunction::EmitLambdaBlockInvokeBody(), clang::CodeGen::CodeGenFunction::EmitLambdaDelegatingInvokeBody(), clang::CodeGen::CGCXXABI::EmitMemberFunctionPointer(), EmitNullConstant(), clang::CodeGen::CodeGenFunction::EmitObjCMRRAutoreleasePoolPop(), clang::CodeGen::CodeGenFunction::EmitObjCMRRAutoreleasePoolPush(), clang::CodeGen::CodeGenFunction::EmitOMPArraySectionExpr(), EmitOMPThreadPrivateDecl(), clang::CodeGen::CGOpenMPRuntimeNVPTX::emitOutlinedFunctionCall(), emitOutlinedFunctionPrologue(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), emitReductionCombiner(), emitReductionListCopy(), clang::CodeGen::CodeGenFunction::EmitScalarRangeCheck(), clang::CodeGen::CodeGenFunction::EmitSEHExceptionCodeSave(), emitShuffleAndReduceFunction(), clang::CodeGen::emitTargetNumIterationsCall(), clang::CodeGen::CGOpenMPRuntime::emitTargetOutlinedFunctionHelper(), emitTaskDupFunction(), clang::CodeGen::emitTaskInit(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntimeNVPTX::emitTeamsOutlinedFunction(), clang::CodeGen::emitThreadPrivateVarInit(), EmitTopLevelDecl(), clang::CodeGen::CodeGenFunction::EmitTypeCheck(), clang::CodeGen::CGOpenMPRuntime::emitUpdateLocation(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), clang::CodeGen::CodeGenFunction::EmitVTablePtrCheck(), clang::CodeGen::CodeGenFunction::EnterDtorCleanups(), extractFieldType(), extractPBaseFlags(), FindIvarInterface(), clang::CodeGen::swiftcall::SwiftAggLowering::finish(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCCtorDtorMethod(), GenerateStringLiteral(), clang::CodeGen::CodeGenFunction::GetAddressOfBaseClass(), clang::CodeGen::CodeGenFunction::GetAddressOfDerivedClass(), clang::CodeGen::CodeGenFunction::GetAddressOfDirectBaseInCompleteClass(), GetAddrOfConstantCFString(), GetAddrOfConstantCString(), GetAddrOfConstantStringFromObjCEncode(), clang::CodeGen::getAddrOfDeclareTargetLink(), GetAddrOfGlobalTemporary(), GetAddrOfGlobalVar(), getAsmSrcLocInfo(), getBlockCaptureStr(), getBlockDescriptorName(), getBlockLayoutInfoString(), getClassPointerAlignment(), clang::CodeGen::CGCXXABI::getContext(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::ConstantEmitter::getCurrentAddrPrivate(), getDynamicOffsetAlignment(), getFunctionLinkage(), GetGCAttrTypeForType(), clang::CodeGen::CGOpenCLRuntime::getGenericVoidPointerType(), getGuardAcquireFn(), getLLVMLinkageVarDefinition(), getMaxAtomicAccessSize(), clang::CodeGen::swiftcall::getMaximumVoluntaryIntegerSize(), getNonMemoryType(), GetNonVirtualBaseClassOffset(), clang::CodeGen::getOrCreateThreadPrivateCache(), clang::CodeGen::CGOpenCLRuntime::getPipeElemAlign(), clang::CodeGen::CGOpenCLRuntime::getPipeElemSize(), clang::CodeGen::CGOpenCLRuntime::getSamplerType(), clang::CodeGen::getTgtBinaryDescriptorQTy(), clang::CodeGen::getTgtDeviceImageQTy(), clang::CodeGen::getTgtOffloadEntryQTy(), getTypeInfoLinkage(), getVBaseAlignment(), clang::CodeGen::CodeGenFunction::getVTablePointers(), clang::CodeGen::CodeGenFunction::GetVTTParameter(), GetWeakRefReference(), hasMRCWeakIvars(), imbueXRayAttrs(), InitCatchParam(), initializeForBlockHeader(), isInSanitizerBlacklist(), clang::CodeGen::swiftcall::isLegalIntegerType(), isTrivialFiller(), isTypeConstant(), clang::CodeGen::CodeGenVTables::isVTableExternal(), isWeakLinkedClass(), maybeSetTrivialComdat(), patternFor(), clang::CodeGen::registerTargetGlobalVariable(), shouldBeInCOMDAT(), clang::CodeGen::CodeGenFunction::ShouldEmitVTableTypeCheckedLoad(), clang::CodeGen::CodeGenFunction::StartThunk(), supportsLightweightRuntime(), clang::CodeGen::CGOpenMPRuntimeNVPTX::translateParameter(), clang::CodeGen::ConstantEmitter::tryEmitPrivate(), clang::CodeGen::ConstantEmitter::tryEmitPrivateForVarInit(), and TypeRequiresBuiltinLaunder().

## ◆ getCoverageMapping()

CoverageMappingModuleGen* clang::CodeGen::CodeGenModule::getCoverageMapping | ( |  | ) | const
| inline

Definition at line 594 of file CodeGenModule.h.

## ◆ getCUDARuntime()

CGCUDARuntime& clang::CodeGen::CodeGenModule::getCUDARuntime | ( |  | ) |
| inline

Return a reference to the configured CUDA runtime.

Definition at line 577 of file CodeGenModule.h.

Referenced by clang::CodeGen::CodeGenFunction::GenerateCode(), and maybeSetTrivialComdat().

## ◆ getCXXABI()

CGCXXABI& clang::CodeGen::CodeGenModule::getCXXABI | ( |  | ) | const
| inline

Definition at line 669 of file CodeGenModule.h.

Referenced by clang::CodeGen::CodeGenFunction::BuildFunctionArgList(), CalculateCookiePadding(), commonEmitCXXMemberOrOperatorCall(), clang::CodeGen::CodeGenFunction::createAtExitStub(), CreateFunctionTypeMetadataForIcall(), EmitArrayDelete(), clang::CodeGen::CodeGenFunction::EmitCallAndReturnForThunk(), EmitCompare(), clang::CodeGen::CodeGenFunction::EmitConstructorBody(), clang::CodeGen::CodeGenFunction::EmitCXXGuardedInit(), EmitDeclDestroy(), EmitDestroyingObjectDelete(), EmitDynamicCastToNull(), clang::CodeGen::CodeGenFunction::EmitEndEHSpec(), EmitGlobalVarDeclLValue(), EmitMemberInitializer(), EmitNullBaseClassInitialization(), EmitObjectDelete(), EmitOMPThreadPrivateDecl(), clang::CodeGen::CodeGenFunction::EmitStartEHSpec(), clang::CodeGen::CodeGenVTables::EmitThunks(), EmitTopLevelDecl(), clang::CodeGen::CodeGenFunction::EmitTypeCheck(), EmitTypeidFromVTable(), clang::CodeGen::CodeGenFunction::EvaluateExprAsBool(), clang::CodeGen::CodeGenVTables::GenerateClassData(), clang::CodeGen::CodeGenVTables::GenerateConstructionVTable(), getAddrOfCXXStructor(), GetAddrOfRTTIDescriptor(), clang::CodeGen::CodeGenVTables::GetAddrOfVTT(), GetAddrOfVTTVTable(), getBlockCaptureStr(), getBlockMangledName(), getFunctionLinkage(), GetIntrinsic(), getMangledNameImpl(), getTerminateFn(), getTypeIdentifier(), PerformReturnAdjustment(), clang::CodeGen::CGCallee::prepareConcreteCallee(), pushTemporaryCleanup(), setDLLImportDLLExport(), SetLLVMFunctionAttributesForDefinition(), setThunkProperties(), shouldEmitAvailableExternallyVTable(), clang::CodeGen::CodeGenFunction::ShouldNullCheckClassCastValue(), clang::CodeGen::CodeGenFunction::StartFunction(), clang::CodeGen::CodeGenFunction::StartThunk(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getDataLayout()

const llvm::DataLayout& clang::CodeGen::CodeGenModule::getDataLayout | ( |  | ) | const
| inline

Definition at line 661 of file CodeGenModule.h.

Referenced by AddVariableConstraints(), BuildAggStore(), CoerceIntOrPtrToIntOrPtr(), CreateCoercedLoad(), CreateCoercedStore(), CreateTempAllocaForCoercion(), clang::CodeGen::CodeGenFunction::EmitAlignmentAssumption(), clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(), clang::CodeGen::CodeGenFunction::EmitLifetimeEnd(), clang::CodeGen::CodeGenFunction::EmitLifetimeStart(), clang::CodeGen::CodeGenFunction::EmitMaterializeTemporaryExpr(), clang::CodeGen::CodeGenFunction::EmitNVPTXDevicePrintfCallExpr(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), emitPointerArithmetic(), emitStoresForConstant(), emitStoresForInitAfterBZero(), emitVoidPtrDirectVAArg(), emitWriteback(), emitWritebackArg(), EnterStructPointerForCoercedAccess(), clang::CodeGen::CodeGenFunction::GenerateCXXGlobalInitFunc(), clang::CodeGen::CodeGenFunction::generateObjCGetterBody(), GetAddrOfConstantCFString(), clang::CodeGen::CodeGenFunction::getBlockByrefInfo(), getBlockLayoutInfoString(), clang::CodeGen::swiftcall::SwiftAggLowering::getCoerceAndExpandTypes(), GetGCAttrTypeForType(), clang::CodeGen::swiftcall::getNaturalAlignment(), getOpaquePersonalityFn(), GetTargetTypeStoreSize(), getTypeAllocSize(), getTypeStoreSize(), initializeForBlockHeader(), isFullSizeType(), clang::CodeGen::ABIInfo::isHomogeneousAggregate(), clang::CodeGen::DominatingLLVMValue::save(), and clang::CodeGen::CodeGenFunction::ShouldNullCheckClassCastValue().

## ◆ getDiags()

DiagnosticsEngine& clang::CodeGen::CodeGenModule::getDiags | ( |  | ) | const
| inline

Definition at line 660 of file CodeGenModule.h.

Referenced by clang::CodeGen::CodeGenFunction::checkTargetFeatures(), clang::CodeGen::createOffloadEntriesAndInfoMetadata(), clang::CodeGen::CodeGenFunction::EmitCheckTypeDescriptor(), Error(), ErrorUnsupported(), getAliasedGlobal(), getCudaArch(), getFunctionFeatureMap(), isTypeConstant(), clang::CodeGen::loadOffloadInfoMetadata(), and Release().

## ◆ getDynamicOffsetAlignment()

CharUnits CodeGenModule::getDynamicOffsetAlignment | ( | CharUnits | ActualAlign,
|  | const CXXRecordDecl * | Class,
|  | CharUnits | ExpectedTargetAlign
| ) |  |

Given a class pointer with an actual known alignment, and the expected alignment of an object at a dynamic offset w.r.t that pointer, return the alignment to assume at the offset.

Definition at line 71 of file CGClass.cpp.

References clang::ASTContext::getASTRecordLayout(), getContext(), clang::TagDecl::isCompleteDefinition(), and min().

Referenced by getVBaseAlignment().

## ◆ getExpressionLocationsEnabled()

bool CodeGenModule::getExpressionLocationsEnabled | ( |  | ) | const

Return true if we should emit location information for expressions.

Definition at line 4393 of file CodeGenModule.cpp.

## ◆ getFunctionFeatureMap()

void CodeGenModule::getFunctionFeatureMap | ( | llvm::StringMap< bool > & | FeatureMap,
|  | GlobalDecl | GD
| ) |  |

Definition at line 5459 of file CodeGenModule.cpp.

References filterFunctionTargetAttrs(), clang::Decl::getAsFunction(), clang::Decl::getAttr(), clang::GlobalDecl::getDecl(), getDiags(), clang::GlobalDecl::getMultiVersionIndex(), clang::CodeGen::getName(), and clang::Target.

Referenced by clang::CodeGen::CodeGenFunction::checkTargetFeatures(), hasRequiredFeatures(), and SetCommonAttributes().

## ◆ getFunctionLinkage()

llvm::GlobalValue::LinkageTypes CodeGenModule::getFunctionLinkage | ( | GlobalDecl | GD | ) |

Definition at line 1139 of file CodeGenModule.cpp.

References getContext(), getCXXABI(), clang::TargetInfo::getCXXABI(), clang::CodeGen::CGCXXABI::getCXXDestructorLinkage(), clang::GlobalDecl::getDecl(), clang::GlobalDecl::getDtorType(), clang::ASTContext::GetGVALinkageForFunction(), getLLVMLinkageForDeclarator(), clang::ASTContext::getTargetInfo(), clang::InternalLinkage, and clang::TargetCXXABI::isMicrosoft().

Referenced by emitConstructorDestructorAlias(), EmitDeferredUnusedCoverageMappings(), getCodegenToUse(), and TryEmitBaseDestructorAsAlias().

## ◆ getGenericBlockLiteralType()

llvm::Type * CodeGenModule::getGenericBlockLiteralType | ( |  | ) |

The type of a generic block literal.

Definition at line 1223 of file CGBlocks.cpp.

References clang::serialized_diags::create(), and clang::CodeGen::Type.

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

## ◆ getGlobalCtors()

CtorList& clang::CodeGen::CodeGenModule::getGlobalCtors | ( |  | ) |
| inline

Definition at line 688 of file CodeGenModule.h.

## ◆ getGlobalDtors()

CtorList& clang::CodeGen::CodeGenModule::getGlobalDtors | ( |  | ) |
| inline

Definition at line 689 of file CodeGenModule.h.

## ◆ GetGlobalValue()

llvm::GlobalValue * CodeGenModule::GetGlobalValue | ( | StringRef | Ref | ) |

Definition at line 1076 of file CodeGenModule.cpp.

Referenced by clang::CodeGen::createOffloadEntriesAndInfoMetadata(), emitConstructorDestructorAlias(), EmitGlobal(), emitGlobalDtorWithTLRegDtor(), EmitTentativeDefinition(), getAliasedGlobal(), getMangledNameImpl(), getThreadLocalWrapperLinkage(), GetWeakRefReference(), HandleCXXStaticMemberVarInstantiation(), isTypeConstant(), lookupRepresentativeDecl(), clang::CodeGen::markAsGlobalTarget(), clang::CodeGen::registerTargetGlobalVariable(), and TryEmitBaseDestructorAsAlias().

## ◆ GetGlobalVarAddressSpace()

LangAS CodeGenModule::GetGlobalVarAddressSpace | ( | const VarDecl * | D | ) |

Return the AST address space of the underlying global variable for D, as determined by its declaration.

Normally this is the same as the address space of D's type, but in CUDA, address spaces are associated with declarations, not types. If D is nullptr, return the default address space for global variable.

For languages without explicit address spaces, if D has default address space, target-specific global or constant address space may be returned.

Definition at line 3338 of file CodeGenModule.cpp.

References clang::cuda_constant, clang::cuda_device, clang::cuda_shared, clang::Default, clang::FirstTargetAddressSpace, clang::QualType::getAddressSpace(), clang::CodeGen::TargetCodeGenInfo::getGlobalVarAddressSpace(), getTargetCodeGenInfo(), clang::ValueDecl::getType(), clang::Decl::hasAttr(), clang::QualType::isConstQualified(), clang::opencl_constant, clang::opencl_global, and clang::opencl_local.

Referenced by isTypeConstant(), and maybeSetTrivialComdat().

## ◆ getHeaderSearchOpts()

const HeaderSearchOptions& clang::CodeGen::CodeGenModule::getHeaderSearchOpts | ( |  | ) | const
| inline

Definition at line 654 of file CodeGenModule.h.

## ◆ getIntrinsic()

llvm::Function * CodeGenModule::getIntrinsic | ( | unsigned | IID,
|  | ArrayRef< llvm::Type *> | Tys = `None`
| ) |  |

Definition at line 4167 of file CodeGenModule.cpp.

References getModule().

Referenced by clang::CodeGen::CallArgList::allocateArgumentMemory(), buildFMulAdd(), emitARCCopyOperation(), clang::CodeGen::CodeGenFunction::EmitARCDestroyWeak(), clang::CodeGen::CodeGenFunction::EmitARCIntrinsicUse(), emitARCLoadOperation(), clang::CodeGen::CodeGenFunction::EmitARCRelease(), emitARCStoreOperation(), clang::CodeGen::CodeGenFunction::EmitARCStoreStrongCall(), emitARCValueOperation(), emitBinaryBuiltin(), clang::CodeGen::CodeGenFunction::EmitCall(), emitCatchDispatchBlock(), clang::CodeGen::CodeGenFunction::EmitCfiCheckFail(), EmitCXXNewAllocSize(), EmitFAbs(), clang::CodeGen::CodeGenFunction::EmitFieldAnnotations(), emitFPIntBuiltin(), clang::CodeGen::CodeGenFunction::EmitInvariantStart(), clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolPop(), clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolPush(), EmitOverflowIntrinsic(), emitRangedBuiltin(), EmitScalarFMAExpr(), EmitSystemZIntrinsicWithCC(), emitTernaryBuiltin(), clang::CodeGen::CodeGenFunction::EmitTrapCall(), clang::CodeGen::CodeGenFunction::EmitTypeCheck(), emitUnaryBuiltin(), clang::CodeGen::CodeGenFunction::EmitVarAnnotations(), emitWasmCatchPadBlock(), EmitX86AddSubSatExpr(), EmitX86CompressStore(), EmitX86ExpandLoad(), EmitX86FMAExpr(), EmitX86FunnelShift(), EmitX86Ternlog(), clang::CodeGen::CallArgList::freeArgumentMemory(), and GetIntrinsic().

## ◆ getItaniumVTableContext()

ItaniumVTableContext& clang::CodeGen::CodeGenModule::getItaniumVTableContext | ( |  | ) |
| inline

Definition at line 680 of file CodeGenModule.h.

References clang::CodeGen::CodeGenVTables::getItaniumVTableContext().

Referenced by ComputeVMIClassTypeInfoFlags().

## ◆ getLangOpts()

const LangOptions& clang::CodeGen::CodeGenModule::getLangOpts | ( |  | ) | const
| inline

Definition at line 653 of file CodeGenModule.h.

Referenced by buildBlockDescriptor(), buildGlobalBlock(), castStringLiteralToDefaultAddressSpace(), clang::CodeGen::CGOpenMPRuntimeNVPTX::CGOpenMPRuntimeNVPTX(), computeBlockInfo(), configureBlocksRuntimeObject(), CreateFunctionTypeMetadataForIcall(), clang::CodeGen::CreateGNUObjCRuntime(), clang::CodeGen::createOffloadEntriesAndInfoMetadata(), clang::CodeGen::createOffloadingBinaryDescriptorRegistration(), clang::CodeGen::CGOpenMPRuntime::DisableAutoDeclareTargetRAII::DisableAutoDeclareTargetRAII(), clang::CodeGen::SanitizerMetadata::disableSanitizerForGlobal(), clang::CodeGen::CodeGenFunction::EmitARCReclaimReturnedObject(), clang::CodeGen::CodeGenFunction::EmitAutoVarCleanups(), EmitBaseInitializer(), clang::CodeGen::CodeGenFunction::EmitCfiCheckFail(), emitCommonOMPTargetDirective(), clang::CodeGen::emitDeclareTargetVarDefinition(), clang::CodeGen::CodeGenFunction::EmitForwardingCallToLambda(), EmitGlobal(), clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolCleanup(), clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr(), clang::CodeGen::CGOpenMPRuntime::emitTargetOutlinedFunctionHelper(), clang::CodeGen::emitThreadPrivateVarInit(), clang::CodeGen::CodeGenVTables::EmitThunks(), clang::CodeGen::CodeGenFunction::EmitVTablePtrCheckForCast(), enterBlockScope(), FindIvarInterface(), GenerateStringLiteral(), clang::CodeGen::EHPersonality::get(), GetAddrOfConstantCFString(), clang::CodeGen::getAddrOfDeclareTargetLink(), GetAddrOfRTTIDescriptor(), getAsmSrcLocInfo(), getBlockDescriptorName(), getBlockLayoutInfoString(), getClangCallTerminateFn(), GetConstantStringEntry(), getCopyDestroyHelperFuncName(), getDataSharingMode(), GetGCAttrTypeForType(), clang::CodeGen::CGOpenCLRuntime::getGenericVoidPointerType(), clang::CodeGen::TargetCodeGenInfo::getGlobalVarAddressSpace(), clang::CodeGen::CodeGenFunction::getLangOpts(), getLLVMLinkageForDeclarator(), getMaxAtomicAccessSize(), clang::CodeGen::getOrCreateThreadPrivateCache(), getSMsBlocksPerSM(), getStaticDeclName(), getTerminateFn(), getTypeInfoLinkage(), hasMRCWeakIvars(), initializeForBlockHeader(), isWeakLinkedClass(), clang::CodeGen::loadOffloadInfoMetadata(), clang::CodeGen::markAsGlobalTarget(), MaybeHandleStaticInExternC(), maybeSetTrivialComdat(), clang::CodeGen::registerTargetGlobalVariable(), clang::CodeGen::SanitizerMetadata::reportGlobalToASan(), setARCRuntimeFunctionLinkage(), shouldAssumeDSOLocal(), clang::CodeGen::CodeGenFunction::StartObjCMethod(), supportsLightweightRuntime(), tryCaptureAsConstant(), tryGenerateSpecializedMessageSend(), UseOptimizedSetter(), ~CodeGenModule(), and clang::CodeGen::CGOpenMPRuntime::DisableAutoDeclareTargetRAII::~DisableAutoDeclareTargetRAII().

## ◆ getLLVMContext()

llvm::LLVMContext& clang::CodeGen::CodeGenModule::getLLVMContext | ( |  | ) |
| inline

Definition at line 670 of file CodeGenModule.h.

Referenced by AddDependentLib(), AddELFLibDirective(), addLinkOptionsPostorder(), AddVTableTypeMetadata(), AppendLinkerOptions(), buildBlockDescriptor(), buildGlobalBlock(), computeBlockInfo(), clang::CodeGen::CGOpenCLRuntime::convertOpenCLSpecificType(), CreateFunctionTypeMetadataForIcall(), clang::CodeGen::CGOpenMPRuntimeNVPTX::createNVPTXRuntimeFunction(), createUnnamedGlobalFrom(), decomposeTypeForEH(), DecorateInstructionWithInvariantGroup(), clang::CodeGen::SanitizerMetadata::disableSanitizerForInstruction(), EmitAnnotationString(), EmitAtomicOp(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitCfiCheckFail(), clang::CodeGen::CodeGenFunction::EmitCXXGuardedInitBranch(), EmitGlobalDeclMetadata(), clang::CodeGen::CodeGenFunction::EmitNVPTXDevicePrintfCallExpr(), EmitOMPThreadPrivateDecl(), EmitSignBit(), emitStoresForConstant(), clang::CodeGen::CodeGenFunction::EmitVTablePtrCheck(), clang::CodeGen::swiftcall::SwiftAggLowering::finish(), GetAddrOfConstantCString(), getClangCallTerminateFn(), clang::CodeGen::swiftcall::SwiftAggLowering::getCoerceAndExpandTypes(), clang::CodeGen::CGOpenCLRuntime::getGenericVoidPointerType(), getGuardAbortFn(), getGuardAcquireFn(), getGuardReleaseFn(), getInitThreadAbortFn(), getInitThreadFooterFn(), getInitThreadHeaderFn(), clang::CodeGen::CodeGenFunction::getLLVMContext(), getOpaquePersonalityFn(), clang::CodeGen::CGOpenCLRuntime::getPipeElemAlign(), clang::CodeGen::CGOpenCLRuntime::getPipeElemSize(), clang::CodeGen::CGOpenCLRuntime::getSamplerType(), clang::CodeGen::CodeGenVTables::getVTableType(), lookupRepresentativeDecl(), patternFor(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getLLVMLifetimeEndFn()

llvm::Constant * CodeGenModule::getLLVMLifetimeEndFn | ( |  | ) |

Lazily declare the .lifetime.end intrinsic.

Definition at line 2211 of file CGDecl.cpp.

References clang::CodeGen::CodeGenTypeCache::AllocaInt8PtrTy, and clang::CodeGen::CodeGenFunction::EmitARCRelease().

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

## ◆ getLLVMLifetimeStartFn()

llvm::Constant * CodeGenModule::getLLVMLifetimeStartFn | ( |  | ) |

Lazily declare the .lifetime.start intrinsic.

Definition at line 2202 of file CGDecl.cpp.

References clang::CodeGen::CodeGenTypeCache::AllocaInt8PtrTy.

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

## ◆ getLLVMLinkageForDeclarator()

llvm::GlobalValue::LinkageTypes CodeGenModule::getLLVMLinkageForDeclarator | ( | const DeclaratorDecl * | D,
|  | GVALinkage | Linkage,
|  | bool | IsConstantVariable
| ) |  |

Returns LLVM linkage for a declarator.

Definition at line 3777 of file CodeGenModule.cpp.

References clang::ExternalLinkage, clang::Decl::getAsFunction(), getLangOpts(), clang::ASTContext::getLangOpts(), clang::GVA_AvailableExternally, clang::GVA_DiscardableODR, clang::GVA_Internal, clang::GVA_StrongExternal, clang::GVA_StrongODR, clang::Decl::hasAttr(), clang::InternalLinkage, clang::FunctionDecl::isMultiVersion(), and isVarDeclStrongDefinition().

Referenced by clang::CodeGen::CGCXXABI::getCXXDestructorLinkage(), getFunctionLinkage(), and getLLVMLinkageVarDefinition().

## ◆ getLLVMLinkageVarDefinition()

llvm::GlobalValue::LinkageTypes CodeGenModule::getLLVMLinkageVarDefinition | ( | const VarDecl * | VD,
|  | bool | IsConstant
| ) |  |

Returns LLVM linkage for a declarator.

Definition at line 3849 of file CodeGenModule.cpp.

References getContext(), clang::ASTContext::GetGVALinkageForVariable(), and getLLVMLinkageForDeclarator().

Referenced by clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(), clang::CodeGen::CodeGenFunction::EmitVarDecl(), getThreadLocalWrapperLinkage(), maybeSetTrivialComdat(), and clang::CodeGen::registerTargetGlobalVariable().

## ◆ GetLLVMVisibility()

static llvm::GlobalValue::VisibilityTypes clang::CodeGen::CodeGenModule::GetLLVMVisibility | ( | Visibility | V | ) |
| inline static

Definition at line 770 of file CodeGenModule.h.

References clang::DefaultVisibility, clang::HiddenVisibility, clang::CodeGen::NotForDefinition, and clang::ProtectedVisibility.

Referenced by extractPBaseFlags(), and setGlobalVisibility().

## ◆ getMangledName()

StringRef CodeGenModule::getMangledName | ( | GlobalDecl | GD | ) |

Definition at line 1030 of file CodeGenModule.cpp.

References clang::Ctor_Base, clang::Ctor_Complete, clang::GlobalDecl::getCanonicalDecl(), clang::GlobalDecl::getCtorType(), clang::TargetInfo::getCXXABI(), clang::GlobalDecl::getDecl(), getMangledNameImpl(), getTarget(), and clang::TargetCXXABI::hasConstructorVariants().

Referenced by createUnnamedGlobalFrom(), emitCommonOMPTargetDirective(), emitConstructorDestructorAlias(), clang::CodeGen::emitDeclareTargetVarDefinition(), EmitDeferredUnusedCoverageMappings(), EmitGlobal(), emitGlobalDtorWithTLRegDtor(), EmitTentativeDefinition(), clang::CodeGen::emitThreadPrivateVarInit(), generateUniqueName(), getAddrOfCXXStructor(), clang::CodeGen::getAddrOfDeclareTargetLink(), GetAddrOfFunction(), GetAddrOfGlobalVar(), getAliasedGlobal(), clang::CodeGen::getOrCreateThreadPrivateCache(), getStaticDeclName(), getThreadLocalWrapperLinkage(), HandleCXXStaticMemberVarInstantiation(), clang::CodeGen::markAsGlobalTarget(), clang::CodeGen::registerTargetGlobalVariable(), and TryEmitBaseDestructorAsAlias().

## ◆ getMemberPointerConstant()

llvm::Constant * CodeGenModule::getMemberPointerConstant | ( | const UnaryOperator * | e | ) |

Definition at line 2021 of file CGExprConstant.cpp.

References clang::ast_matchers::decl, EmitNullConstantForBase(), clang::UnaryOperator::getSubExpr(), clang::Expr::getType(), and clang::CodeGen::Type.

## ◆ getMicrosoftVTableContext()

MicrosoftVTableContext& clang::CodeGen::CodeGenModule::getMicrosoftVTableContext | ( |  | ) |
| inline

Definition at line 684 of file CodeGenModule.h.

References clang::CodeGen::CodeGenVTables::getMicrosoftVTableContext().

Referenced by detectAmbiguousBases(), and emitCXXDestructor().

## ◆ getModule()

llvm::Module& clang::CodeGen::CodeGenModule::getModule | ( |  | ) | const
| inline

Definition at line 659 of file CodeGenModule.h.

Referenced by clang::CodeGen::CodeGenFunction::AddInitializerToStaticVarDecl(), buildBlockDescriptor(), buildGlobalBlock(), CanUseSingleInheritance(), clang::CodeGen::CGOpenMPRuntimeNVPTX::clear(), clang::CodeGen::CGOpenMPRuntimeNVPTX::createNVPTXRuntimeFunction(), clang::CodeGen::createOffloadEntriesAndInfoMetadata(), clang::CodeGen::CGOpenMPRuntime::createOffloadEntry(), clang::CodeGen::createOffloadingBinaryDescriptorRegistration(), createUnnamedGlobalFrom(), decomposeTypeForEH(), detectAmbiguousBases(), clang::CodeGen::SanitizerMetadata::disableSanitizerForInstruction(), EmitAnnotationString(), emitAutoreleasedReturnValueMarker(), clang::CodeGen::CodeGenFunction::EmitCfiCheckFail(), clang::CodeGen::CodeGenFunction::EmitCfiCheckStub(), clang::CodeGen::CodeGenFunction::EmitCfiSlowPathCheck(), clang::CodeGen::CodeGenFunction::EmitCheck(), emitConstructorDestructorAlias(), emitCXXDestructor(), clang::CodeGen::emitDeclareTargetVarDefinition(), emitDestructorsFunction(), EmitGlobalAnnotations(), EmitGlobalDeclMetadata(), emitGlobalDtorWithTLRegDtor(), emitInterWarpCopyFunction(), clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(), EmitNullBaseClassInitialization(), clang::CodeGen::CodeGenFunction::EmitNullInitialization(), clang::CodeGen::CodeGenFunction::EmitNVPTXDevicePrintfCallExpr(), clang::CodeGen::CGOpenMPRuntimeNVPTX::emitOutlinedFunctionCall(), emitOutlinedFunctionPrologue(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), emitShuffleAndReduceFunction(), clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(), clang::CodeGen::CGOpenMPRuntime::emitTargetOutlinedFunctionHelper(), emitTaskDupFunction(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntimeNVPTX::emitTeamsOutlinedFunction(), EmitTopLevelDecl(), clang::CodeGen::CodeGenFunction::EncodeAddrForUseInPrologue(), clang::CodeGen::CodeGenFunction::FinishFunction(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), clang::CodeGen::CodeGenFunction::GenerateCopyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateDestroyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction(), GenerateStringLiteral(), clang::CodeGen::getAddrOfDeclareTargetLink(), getBlockLayoutInfoString(), getClangCallTerminateFn(), clang::CodeGen::ConstantEmitter::getCurrentAddrPrivate(), getInitThreadEpochPtr(), getIntrinsic(), getMasterThreadID(), getNVPTXNumThreads(), getNVPTXThreadID(), getNVPTXWarpSize(), getSanStats(), getThreadLocalWrapperLinkage(), getTypeInfoVTable(), HandleCXXStaticMemberVarInstantiation(), isSimpleZero(), isTrivialFiller(), isTypeConstant(), lookupRepresentativeDecl(), PersonalityHasOnlyCXXUses(), Release(), setThunkProperties(), supportsLightweightRuntime(), and TryEmitBaseDestructorAsAlias().

## ◆ getModuleDebugInfo()

CGDebugInfo* clang::CodeGen::CodeGenModule::getModuleDebugInfo | ( |  | ) |
| inline

Definition at line 644 of file CodeGenModule.h.

Referenced by EmitTopLevelDecl(), clang::CodeGen::CodeGenVTables::GenerateClassData(), clang::CodeGen::CodeGenVTables::GenerateConstructionVTable(), maybeSetTrivialComdat(), and clang::CodeGen::CodeGenTypes::UpdateCompletedType().

## ◆ getMostBaseClasses()

std::vector< const CXXRecordDecl * > CodeGenModule::getMostBaseClasses | ( | const CXXRecordDecl * | RD | ) |

Return a vector of most-base classes for RD.

This is used to implement control flow integrity checks for member function pointers.

A most-base class of a class C is defined as a recursive base class of C, including C itself, that does not have any bases.

Definition at line 1210 of file CodeGenModule.cpp.

References clang::CXXRecordDecl::bases(), and clang::CXXRecordDecl::getNumBases().

Referenced by SetLLVMFunctionAttributesForDefinition().

## ◆ GetNonVirtualBaseClassOffset()

llvm::Constant * CodeGenModule::GetNonVirtualBaseClassOffset | ( | const CXXRecordDecl * | ClassDecl,
|  | CastExpr::path_const_iterator | PathBegin,
|  | CastExpr::path_const_iterator | PathEnd
| ) |  |

Returns the offset from a derived class to a class.

Returns null if the offset is 0.

Definition at line 178 of file CGClass.cpp.

References computeNonVirtualBaseClassOffset(), clang::CodeGen::CodeGenTypes::ConvertType(), getContext(), clang::CharUnits::getQuantity(), clang::CharUnits::isZero(), Offset, clang::CodeGen::CodeGenTypeCache::PtrDiffTy, and clang::CodeGen::Type.

Referenced by clang::CodeGen::CGCXXABI::getMemberPointerAdjustment().

## ◆ getNoObjCARCExceptionsMetadata()

llvm::MDNode* clang::CodeGen::CodeGenModule::getNoObjCARCExceptionsMetadata | ( |  | ) |
| inline

Definition at line 646 of file CodeGenModule.h.

## ◆ getNSConcreteGlobalBlock()

llvm::Constant * CodeGenModule::getNSConcreteGlobalBlock | ( |  | ) |

Definition at line 3016 of file CGBlocks.cpp.

References configureBlocksRuntimeObject().

Referenced by buildGlobalBlock(), and clang::CodeGen::CodeGenFunction::EmitBlockLiteral().

## ◆ getNSConcreteStackBlock()

llvm::Constant * CodeGenModule::getNSConcreteStackBlock | ( |  | ) |

Definition at line 3027 of file CGBlocks.cpp.

References configureBlocksRuntimeObject().

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

## ◆ getNullPointer()

llvm::Constant * CodeGenModule::getNullPointer | ( | llvm::PointerType * | T,
|  | QualType | QT
| ) |  |

Get target specific null pointer.

Parameters

  T | is the LLVM type of the null pointer.
  QT | is the clang QualType of the null pointer.

Definition at line 1567 of file CGExprConstant.cpp.

References clang::CodeGen::ConstantEmitter::CGM, clang::CodeGen::ConstantAddress::getPointer(), and clang::CodeGen::Type.

Referenced by clang::CodeGen::CodeGenFunction::EmitScalarInit(), and clang::CodeGen::CodeGenFunction::ShouldNullCheckClassCastValue().

## ◆ getObjCEntrypoints()

ObjCEntrypoints& clang::CodeGen::CodeGenModule::getObjCEntrypoints | ( |  | ) | const
| inline

Definition at line 582 of file CodeGenModule.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitARCAutorelease(), clang::CodeGen::CodeGenFunction::EmitARCAutoreleaseReturnValue(), clang::CodeGen::CodeGenFunction::EmitARCCopyWeak(), clang::CodeGen::CodeGenFunction::EmitARCDestroyWeak(), clang::CodeGen::CodeGenFunction::EmitARCInitWeak(), clang::CodeGen::CodeGenFunction::EmitARCIntrinsicUse(), clang::CodeGen::CodeGenFunction::EmitARCLoadWeak(), clang::CodeGen::CodeGenFunction::EmitARCLoadWeakRetained(), clang::CodeGen::CodeGenFunction::EmitARCMoveWeak(), clang::CodeGen::CodeGenFunction::EmitARCRelease(), clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleasedReturnValue(), clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleaseNonBlock(), clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleaseReturnValue(), clang::CodeGen::CodeGenFunction::EmitARCRetainBlock(), clang::CodeGen::CodeGenFunction::EmitARCRetainNonBlock(), clang::CodeGen::CodeGenFunction::EmitARCStoreStrongCall(), clang::CodeGen::CodeGenFunction::EmitARCStoreWeak(), clang::CodeGen::CodeGenFunction::EmitARCUnsafeClaimAutoreleasedReturnValue(), emitAutoreleasedReturnValueMarker(), clang::CodeGen::CodeGenFunction::EmitObjCAlloc(), clang::CodeGen::CodeGenFunction::EmitObjCAllocWithZone(), clang::CodeGen::CodeGenFunction::EmitObjCAutorelease(), clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolPop(), clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolPush(), clang::CodeGen::CodeGenFunction::EmitObjCRelease(), clang::CodeGen::CodeGenFunction::EmitObjCRetainNonBlock(), tryEmitFusedAutoreleaseOfResult(), and tryRemoveRetainOfSelf().

## ◆ getObjCFastEnumerationStateType()

QualType CodeGenModule::getObjCFastEnumerationStateType | ( |  | ) |

Retrieve the record type that describes the state of an Objective-C fast enumeration loop (for..in).

Definition at line 4397 of file CodeGenModule.cpp.

References clang::DeclContext::addDecl(), clang::AS_public, clang::ASTContext::buildImplicitRecord(), clang::RecordDecl::completeDefinition(), clang::FieldDecl::Create(), clang::ASTContext::getConstantArrayType(), clang::ASTContext::getObjCIdType(), clang::ASTContext::getPointerType(), clang::ASTContext::getTagDeclType(), clang::ICIS_NoInit, clang::ArrayType::Normal, clang::Decl::setAccess(), clang::TagDecl::startDefinition(), and clang::ASTContext::UnsignedLongTy.

## ◆ getObjCRuntime()

CGObjCRuntime& clang::CodeGen::CodeGenModule::getObjCRuntime | ( |  | ) |
| inline

Return a reference to the configured Objective-C runtime.

Definition at line 556 of file CodeGenModule.h.

Referenced by buildBlockDescriptor(), clang::CodeGen::CodeGenFunction::EmitBlockCopyAndAutorelease(), emitCPPObjectAtomicGetterCall(), emitCPPObjectAtomicSetterCall(), EmitDeclInit(), clang::CodeGen::CodeGenFunction::EmitIvarOffset(), clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(), clang::CodeGen::CodeGenFunction::EmitLValueForIvar(), clang::CodeGen::CodeGenFunction::EmitObjCBoxedExpr(), clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr(), clang::CodeGen::CodeGenFunction::EmitObjCMRRAutoreleasePoolPop(), clang::CodeGen::CodeGenFunction::EmitObjCMRRAutoreleasePoolPush(), clang::CodeGen::CodeGenFunction::EmitObjCProtocolExpr(), clang::CodeGen::CodeGenFunction::EmitObjCSelectorExpr(), clang::CodeGen::CodeGenFunction::EmitObjCSelectorLValue(), clang::CodeGen::CodeGenFunction::EmitObjCStringLiteral(), clang::CodeGen::CodeGenFunction::EmitStoreThroughLValue(), emitStructSetterCall(), clang::CodeGen::CodeGenFunction::generateObjCGetterBody(), clang::CodeGen::CodeGenFunction::generateObjCSetterBody(), getBlockDescriptorName(), and clang::CodeGen::CodeGenFunction::StartObjCMethod().

## ◆ getOpenCLRuntime()

CGOpenCLRuntime& clang::CodeGen::CodeGenModule::getOpenCLRuntime | ( |  | ) |
| inline

Return a reference to the configured OpenCL runtime.

Definition at line 565 of file CodeGenModule.h.

Referenced by buildGlobalBlock(), clang::CodeGen::CodeGenTypes::ConvertType(), createOpenCLIntToSamplerConversion(), clang::CodeGen::CodeGenFunction::EmitBlockLiteral(), clang::CodeGen::CodeGenFunction::EmitVarDecl(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), and initializeForBlockHeader().

## ◆ getOpenMPRuntime()

CGOpenMPRuntime& clang::CodeGen::CodeGenModule::getOpenMPRuntime | ( |  | ) |
| inline

Return a reference to the configured OpenMP runtime.

Definition at line 571 of file CodeGenModule.h.

Referenced by CreateFunctionTypeMetadataForIcall(), createRuntimeShuffleFunction(), clang::CodeGen::CGOpenMPRuntime::DisableAutoDeclareTargetRAII::DisableAutoDeclareTargetRAII(), clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(), emitCommonOMPParallelDirective(), emitCommonOMPTargetDirective(), emitCommonOMPTeamsDirective(), emitCopyprivateCopyFunction(), clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit(), emitDeclTargetLinkVarDeclLValue(), clang::CodeGen::emitDeferredTargetDecls(), emitDestructorsFunction(), clang::CodeGen::CGOpenMPRuntimeNVPTX::emitFunctionProlog(), EmitGlobal(), emitInitWithReductionInitializer(), emitOMPAtomicCaptureExpr(), emitOMPAtomicReadExpr(), emitOMPAtomicUpdateExpr(), emitOMPAtomicWriteExpr(), clang::CodeGen::CGOpenMPRuntime::emitOMPIfClause(), emitOMPSimdRegion(), EmitOMPThreadPrivateDecl(), emitOutlinedFunctionPrologue(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), emitReductionCombiner(), emitShuffleAndReduceFunction(), emitTargetRegion(), emitTaskDupFunction(), clang::CodeGen::emitTaskInit(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntimeNVPTX::emitTeamsOutlinedFunction(), EmitThreadPrivateVarDeclLValue(), generateUniqueName(), isTypeConstant(), clang::CodeGen::CodeGenFunction::StartFunction(), supportsLightweightRuntime(), clang::CodeGen::CodeGenFunction::~CodeGenFunction(), and clang::CodeGen::CGOpenMPRuntime::DisableAutoDeclareTargetRAII::~DisableAutoDeclareTargetRAII().

## ◆ getOrCreateStaticVarDecl()

llvm::Constant * CodeGenModule::getOrCreateStaticVarDecl | ( | const VarDecl & | D,
|  | llvm::GlobalValue::LinkageTypes | Linkage
| ) |  |

Definition at line 211 of file CGDecl.cpp.

References clang::Type::isConstantSizeType().

Referenced by clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(), and clang::CodeGen::CodeGenFunction::EmitStaticVarDecl().

## ◆ getPGOReader()

llvm::IndexedInstrProfReader* clang::CodeGen::CodeGenModule::getPGOReader | ( |  | ) | const
| inline

Definition at line 592 of file CodeGenModule.h.

## ◆ getPGOStats()

InstrProfStats& clang::CodeGen::CodeGenModule::getPGOStats | ( |  | ) |
| inline

Definition at line 591 of file CodeGenModule.h.

## ◆ getPreprocessorOpts()

const PreprocessorOptions& clang::CodeGen::CodeGenModule::getPreprocessorOpts | ( |  | ) | const
| inline

Definition at line 656 of file CodeGenModule.h.

## ◆ getSanitizerMetadata()

SanitizerMetadata* clang::CodeGen::CodeGenModule::getSanitizerMetadata | ( |  | ) |
| inline

Definition at line 1213 of file CodeGenModule.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitCfiSlowPathCheck(), clang::CodeGen::CodeGenFunction::EmitCheck(), clang::CodeGen::CodeGenFunction::EmitCheckSourceLocation(), and clang::CodeGen::CodeGenFunction::EmitStaticVarDecl().

## ◆ getSanStats()

llvm::SanitizerStatReport & CodeGenModule::getSanStats | ( |  | ) |

Definition at line 5494 of file CodeGenModule.cpp.

References getModule().

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

## ◆ getSize()

llvm::ConstantInt * CodeGenModule::getSize | ( | CharUnits | numChars | ) |

Emit the given number of characters as a value of type size_t.

Definition at line 719 of file CodeGenModule.cpp.

References clang::CharUnits::getQuantity(), and clang::CodeGen::CodeGenTypeCache::SizeTy.

Referenced by clang::CodeGen::CodeGenFunction::EmitArraySubscriptExpr(), clang::CodeGen::CodeGenFunction::EmitAutoVarInit(), EmitNullBaseClassInitialization(), clang::CodeGen::CodeGenFunction::EmitNullInitialization(), clang::CodeGen::CodeGenFunction::EmitOMPArraySectionExpr(), emitPointerArithmetic(), emitStructSetterCall(), clang::CodeGen::emitTaskInit(), clang::CodeGen::getOrCreateThreadPrivateCache(), and tryEmitFMulAdd().

## ◆ getStaticLocalDeclAddress()

llvm::Constant* clang::CodeGen::CodeGenModule::getStaticLocalDeclAddress | ( | const VarDecl * | D | ) |
| inline

Definition at line 598 of file CodeGenModule.h.

## ◆ getStaticLocalDeclGuardAddress()

llvm::GlobalVariable* clang::CodeGen::CodeGenModule::getStaticLocalDeclGuardAddress | ( | const VarDecl * | D | ) |
| inline

Definition at line 610 of file CodeGenModule.h.

## ◆ getStringLiteralAddressSpace()

LangAS CodeGenModule::getStringLiteralAddressSpace | ( |  | ) | const

Return the AST address space of string literal, which is used to emit the string literal as global variable in LLVM IR.

Note: This is not necessarily the address space of the string literal in AST. For address space agnostic language, e.g. C++, string literal in AST is always in default address space.

Definition at line 3365 of file CodeGenModule.cpp.

References clang::Default, getTarget(), and clang::opencl_constant.

Referenced by createUnnamedGlobalFrom(), and GenerateStringLiteral().

## ◆ getTarget()

const TargetInfo& clang::CodeGen::CodeGenModule::getTarget | ( |  | ) | const
| inline

Definition at line 664 of file CodeGenModule.h.

Referenced by addLinkOptionsPostorder(), AppendCPUSpecificCPUDispatchMangling(), AppendTargetMangling(), BuildAppleKextVirtualCall(), buildGlobalBlock(), castStringLiteralToDefaultAddressSpace(), configureBlocksRuntimeObject(), createCXXABI(), clang::CodeGen::CreateItaniumCXXABI(), clang::CodeGen::CodeGenFunction::EmitBlockLiteral(), clang::CodeGen::CGCXXABI::EmitCtorCompleteObjectHandler(), clang::CodeGen::CodeGenFunction::EmitEndEHSpec(), emitGlobalDtorWithTLRegDtor(), clang::CodeGen::CodeGenFunction::EmitStartEHSpec(), EmitTopLevelDecl(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), FindIvarInterface(), clang::CodeGen::EHPersonality::get(), getAddrOfCXXStructor(), GetAddrOfFunction(), getBlockLayoutInfoString(), getCodegenToUse(), getCudaArch(), GetGCAttrTypeForType(), getMangledName(), getMaxAtomicAccessSize(), getStringLiteralAddressSpace(), getTerminateFn(), getThreadLocalWrapperLinkage(), initializeForBlockHeader(), isThreadWrapperReplaceable(), clang::CodeGen::CodeGenVTables::isVTableExternal(), PersonalityHasOnlyCXXUses(), SetCommonAttributes(), SetLLVMFunctionAttributesForDefinition(), and shouldEmitVTableThunk().

## ◆ getTargetCodeGenInfo()

const TargetCodeGenInfo & CodeGenModule::getTargetCodeGenInfo | ( |  | ) |

Definition at line 9246 of file TargetInfo.cpp.

References clang::CodeGen::ABIInfo::getTarget(), clang::TargetInfo::getTriple(), and P.

Referenced by AddDependentLib(), addLinkOptionsPostorder(), arrangeFreeFunctionLikeCall(), buildGlobalBlock(), castStringLiteralToDefaultAddressSpace(), clang::CodeGen::CodeGenTypes::ClangCallConvToLLVMCallConv(), computeBlockInfo(), CreateFunctionTypeMetadataForIcall(), emitAutoreleasedReturnValueMarker(), clang::CodeGen::CodeGenFunction::EmitCall(), EmitGlobalDeclMetadata(), GetGlobalVarAddressSpace(), getPrologueSignature(), getSwiftABIInfo(), clang::CodeGen::CodeGenFunction::getTargetHooks(), InitCatchParam(), initializeForBlockHeader(), isTypeConstant(), lookupRepresentativeDecl(), SetCommonAttributes(), setCUDAKernelCallingConvention(), and clang::CodeGen::CodeGenFunction::ShouldNullCheckClassCastValue().

## ◆ GetTargetTypeStoreSize()

CharUnits CodeGenModule::GetTargetTypeStoreSize | ( | llvm::Type * | Ty | ) | const

Return the store size, in character units, of the given LLVM type.

Definition at line 3333 of file CodeGenModule.cpp.

References getDataLayout(), and clang::ASTContext::toCharUnitsFromBits().

Referenced by clang::CodeGen::getOrCreateThreadPrivateCache().

## ◆ getTBAAAccessInfo()

TBAAAccessInfo CodeGenModule::getTBAAAccessInfo | ( | QualType | AccessType | ) |

getTBAAAccessInfo - Get TBAA information that describes an access to an object of the given type.

Definition at line 629 of file CodeGenModule.cpp.

Referenced by clang::CodeGen::CodeGenFunction::EmitArrayToPointerDecay(), clang::CodeGen::CodeGenFunction::EmitLoadOfReferenceLValue(), clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(), clang::CodeGen::CodeGenFunction::EmitPointerWithAlignment(), clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(), clang::CodeGen::CodeGenFunction::getNaturalTypeAlignment(), and clang::CodeGen::CodeGenFunction::MakeAddrLValue().

## ◆ getTBAAAccessTagInfo()

llvm::MDNode * CodeGenModule::getTBAAAccessTagInfo | ( | TBAAAccessInfo | Info | ) |

getTBAAAccessTagInfo - Get TBAA tag for a given memory access.

Definition at line 654 of file CodeGenModule.cpp.

Referenced by DecorateInstructionWithTBAA().

## ◆ getTBAABaseTypeInfo()

llvm::MDNode * CodeGenModule::getTBAABaseTypeInfo | ( | QualType | QTy | ) |

getTBAABaseTypeInfo - Get metadata that describes the given base access type.

Return null if the type is not suitable for use in TBAA access tags.

Definition at line 648 of file CodeGenModule.cpp.

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

## ◆ getTBAAInfoForSubobject()

TBAAAccessInfo clang::CodeGen::CodeGenModule::getTBAAInfoForSubobject | ( | LValue | Base,
|  | QualType | AccessType
| ) |  |
| inline

getTBAAInfoForSubobject - Get TBAA information for an access with a given base lvalue.

Definition at line 729 of file CodeGenModule.h.

References clang::CodeGen::LValue::getTBAAInfo(), and clang::CodeGen::TBAAAccessInfo::isMayAlias().

Referenced by clang::CodeGen::CodeGenFunction::EmitArraySubscriptExpr(), clang::CodeGen::CodeGenFunction::EmitCastLValue(), clang::CodeGen::ReductionCodeGen::emitInitialization(), clang::CodeGen::CodeGenFunction::EmitLValueForFieldInitialization(), clang::CodeGen::CodeGenFunction::EmitOMPArraySectionExpr(), clang::CodeGen::CodeGenFunction::EmitUnaryOpLValue(), and loadToBegin().

## ◆ getTBAAStructInfo()

llvm::MDNode * CodeGenModule::getTBAAStructInfo | ( | QualType | QTy | ) |

Definition at line 642 of file CodeGenModule.cpp.

## ◆ getTBAATypeInfo()

llvm::MDNode * CodeGenModule::getTBAATypeInfo | ( | QualType | QTy | ) |

getTBAATypeInfo - Get metadata used to describe accesses to objects of the given type.

Definition at line 623 of file CodeGenModule.cpp.

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

## ◆ getTBAAVTablePtrAccessInfo()

TBAAAccessInfo CodeGenModule::getTBAAVTablePtrAccessInfo | ( | llvm::Type * | VTablePtrType | ) |

getTBAAVTablePtrAccessInfo - Get the TBAA information that describes an access to a virtual table pointer.

Definition at line 636 of file CodeGenModule.cpp.

## ◆ getTerminateFn()

llvm::Constant * CodeGenModule::getTerminateFn | ( |  | ) |

Get the declaration of std::terminate for the platform.

Definition at line 51 of file CGException.cpp.

References clang::frontend::CPlusPlus, CreateRuntimeFunction(), getCXXABI(), getLangOpts(), getTarget(), clang::ObjCRuntime::hasTerminate(), clang::LangOptions::MSVC2015, and clang::CodeGen::CodeGenTypeCache::VoidTy.

Referenced by clang::CodeGen::CGCXXABI::emitTerminateForUnexpectedException(), and getClangCallTerminateFn().

## ◆ getTriple()

const llvm::Triple& clang::CodeGen::CodeGenModule::getTriple | ( |  | ) | const
| inline

Definition at line 665 of file CodeGenModule.h.

References clang::TargetInfo::getTriple().

Referenced by CreateFunctionTypeMetadataForIcall(), clang::CodeGen::emitDeclareSimdFunction(), GetAddrOfConstantCFString(), getBlockLayoutInfoString(), getTypeInfoLinkage(), isTypeConstant(), Release(), setARCRuntimeFunctionLinkage(), shouldAssumeDSOLocal(), TryEmitBaseDestructorAsAlias(), and ~CodeGenModule().

## ◆ getTypeDescriptorFromMap()

llvm::Constant* clang::CodeGen::CodeGenModule::getTypeDescriptorFromMap | ( | QualType | Ty | ) |
| inline

Definition at line 637 of file CodeGenModule.h.

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

## ◆ getTypes()

CodeGenTypes& clang::CodeGen::CodeGenModule::getTypes | ( |  | ) |
| inline

Definition at line 676 of file CodeGenModule.h.

Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), clang::CodeGen::arrangeCXXMethodType(), clang::CodeGen::arrangeFreeFunctionCall(), clang::CodeGen::arrangeFreeFunctionType(), clang::CodeGen::arrangeObjCMessageSendSignature(), buildBlockDescriptor(), buildGlobalBlock(), canEmitDelegateCallArgs(), CanUseSingleInheritance(), clang::CodeGen::CGOpenMPRuntime::CGOpenMPRuntime(), clang::CodeGen::CGOpenMPRuntimeNVPTX::clear(), codegenCXXStructor(), computeBlockInfo(), clang::CodeGen::computeSPIRKernelABIInfo(), ComputeVMIClassTypeInfoFlags(), clang::CodeGen::convertFreeFunctionType(), clang::CodeGen::CGCXXABI::ConvertMemberPointerType(), clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CodeGenFunction::ConvertTypeForMem(), clang::CodeGen::convertTypeForMemory(), clang::CodeGen::CodeGenFunction::createAtExitStub(), createConstantGlobalStructAndAddToParent(), CreateFunctionTypeMetadataForIcall(), clang::CodeGen::CGOpenMPRuntimeNVPTX::createNVPTXRuntimeFunction(), clang::CodeGen::createOffloadingBinaryDescriptorRegistration(), clang::CodeGen::createRuntimeFunction(), emitAddrOfFieldStorage(), emitAtomicLibcall(), clang::CodeGen::CodeGenFunction::EmitAutoVarCleanups(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitCallAndReturnForThunk(), clang::CodeGen::CodeGenFunction::EmitCfiCheckFail(), emitCombinerOrInitializer(), emitCopyprivateCopyFunction(), clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(), emitCXXDestructor(), clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit(), clang::CodeGen::emitDeclareTargetVarDefinition(), emitDestructorsFunction(), clang::CodeGen::CodeGenFunction::EmitExtVectorElementLValue(), clang::CodeGen::ConstantEmitter::emitForMemory(), EmitFunctionDeclPointer(), EmitGlobal(), emitGlobalDtorWithTLRegDtor(), emitInterWarpCopyFunction(), clang::CodeGen::emitKmpRoutineEntryT(), clang::CodeGen::CodeGenFunction::EmitLambdaDelegatingInvokeBody(), clang::CodeGen::CodeGenFunction::EmitLoadOfGlobalRegLValue(), clang::CodeGen::CGCXXABI::EmitLoadOfMemberFunctionPointer(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), EmitNewDeleteCall(), EmitNullConstant(), EmitNullConstantForBase(), clang::CodeGen::CodeGenFunction::EmitNullInitialization(), clang::CodeGen::CGOpenMPRuntimeNVPTX::emitOutlinedFunctionCall(), emitOutlinedFunctionPrologue(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), emitReductionCombiner(), emitShuffleAndReduceFunction(), clang::CodeGen::CodeGenFunction::EmitStoreThroughGlobalRegLValue(), emitTaskDupFunction(), emitTaskPrivateMappingFunction(), clang::CodeGen::emitThreadPrivateVarInit(), clang::CodeGen::CodeGenVTables::EmitThunks(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), extractPBaseFlags(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), clang::CodeGen::CodeGenFunction::GenerateCopyHelperFunction(), clang::CodeGen::CodeGenFunction::generateDestroyHelper(), clang::CodeGen::CodeGenFunction::GenerateDestroyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction(), clang::CodeGen::CodeGenFunction::generateThunk(), clang::CodeGen::CodeGenFunction::GenerateVarArgsThunk(), GetAddrOfConstantCFString(), getAddrOfCXXStructor(), clang::CodeGen::getAddrOfDeclareTargetLink(), GetAddrOfFunction(), GetAddrOfGlobal(), GetAddrOfGlobalVar(), clang::CodeGen::CGCXXABI::GetBogusMemberPointer(), GetConstantArrayFromStringLiteral(), GetGCAttrTypeForType(), getGuardAcquireFn(), clang::CodeGen::getLLVMFieldNumber(), getMasterThreadID(), clang::CodeGen::CGObjCRuntime::getMessageSendInfo(), getThreadLocalWrapperLinkage(), clang::CodeGen::CodeGenFunction::getTypes(), GetWeakRefReference(), HandleCXXStaticMemberVarInstantiation(), maybeSetTrivialComdat(), clang::CodeGen::CodeGenFunction::StartObjCMethod(), TryEmitBaseDestructorAsAlias(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getUniqueBlockCount()

int clang::CodeGen::CodeGenModule::getUniqueBlockCount | ( |  | ) |
| inline

Fetches the global unique block count.

Definition at line 877 of file CodeGenModule.h.

## ◆ getVBaseAlignment()

CharUnits CodeGenModule::getVBaseAlignment | ( | CharUnits | actualDerivedAlign,
|  | const CXXRecordDecl * | derivedClass,
|  | const CXXRecordDecl * | vbaseClass
| ) |  |

Returns the assumed alignment of a virtual base of a class.

Return the best known alignment for a pointer to a virtual base, given the alignment of a pointer to the derived class.

Definition at line 56 of file CGClass.cpp.

References clang::ASTContext::getASTRecordLayout(), getContext(), getDynamicOffsetAlignment(), and clang::TagDecl::isCompleteDefinition().

Referenced by ApplyNonVirtualAndVirtualOffset(), and hasDefaultCXXMethodCC().

## ◆ getVTableLinkage()

llvm::GlobalVariable::LinkageTypes CodeGenModule::getVTableLinkage | ( | const CXXRecordDecl * | RD | ) |

Return the appropriate linkage for the vtable, VTT, and type information of the given class.

Compute the required linkage of the vtable for the given class.

Note that we only call this at the end of the translation unit.

Definition at line 792 of file CGVTables.cpp.

References clang::InternalLinkage, and clang::NamedDecl::isExternallyVisible().

Referenced by getTypeInfoLinkage().

## ◆ getVTables()

CodeGenVTables& clang::CodeGen::CodeGenModule::getVTables | ( |  | ) |
| inline

Definition at line 678 of file CodeGenModule.h.

Referenced by shouldEmitVTableAtEndOfTranslationUnit().

## ◆ GetWeakRefReference()

ConstantAddress CodeGenModule::GetWeakRefReference | ( | const ValueDecl * | VD | ) |

Get a reference to the target of VD.

Definition at line 2091 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypes::ConvertTypeForMem(), clang::Decl::getAttr(), getContext(), clang::ASTContext::getDeclAlign(), GetGlobalValue(), clang::ASTContext::getTargetAddressSpace(), clang::ValueDecl::getType(), getTypes(), and clang::CodeGen::Type.

Referenced by clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(), and EmitFunctionDeclPointer().

## ◆ HandleCXXStaticMemberVarInstantiation()

void CodeGenModule::HandleCXXStaticMemberVarInstantiation | ( | VarDecl * | VD | ) |

Tell the consumer that this variable has been instantiated.

Definition at line 3971 of file CodeGenModule.cpp.

References AddGlobalAnnotations(), clang::CodeGen::CodeGenTypes::arrangeGlobalDeclaration(), clang::CodeGen::CodeGenTypes::ConvertTypeForMem(), clang::serialized_diags::create(), clang::VarDecl::Definition, EmitTopLevelDecl(), clang::ExternalLinkage, clang::CodeGen::ForDefinition, clang::CodeGen::CodeGenFunction::GenerateCode(), GetAddrOfFunction(), GetAddrOfGlobalVar(), clang::Decl::getAttr(), clang::GlobalDecl::getDecl(), clang::VarDecl::getDefinition(), clang::CodeGen::CodeGenTypes::GetFunctionType(), GetGlobalValue(), clang::Decl::getLocation(), getMangledName(), getModule(), clang::VarDecl::getTemplateSpecializationKind(), clang::ValueDecl::getType(), getTypes(), clang::Decl::hasAttr(), clang::VarDecl::isThisDeclarationADefinition(), clang::Decl::isWeakImported(), lookupRepresentativeDecl(), MaybeHandleStaticInExternC(), maybeSetTrivialComdat(), SetCommonAttributes(), setFunctionLinkage(), setGVProperties(), SetLLVMFunctionAttributesForDefinition(), setTLSMode(), clang::TSK_ExplicitInstantiationDefinition, and clang::CodeGen::Type.

## ◆ HasHiddenLTOVisibility()

bool CodeGenModule::HasHiddenLTOVisibility | ( | const CXXRecordDecl * | RD | ) |

Returns whether the given record has hidden LTO visibility and therefore may participate in (single-module) CFI and whole-program vtable optimization.

Definition at line 974 of file CGVTables.cpp.

References clang::LinkageInfo::getLinkage(), clang::NamedDecl::getLinkageAndVisibility(), clang::DeclContext::getParent(), clang::LinkageInfo::getVisibility(), clang::Decl::hasAttr(), clang::HiddenVisibility, and clang::isExternallyVisible().

Referenced by requiresMemberFunctionPointerTypeMetadata().

## ◆ hasObjCRuntime()

bool clang::CodeGen::CodeGenModule::hasObjCRuntime | ( |  | ) |
| inline

Return true iff an Objective-C runtime has been configured.

Definition at line 562 of file CodeGenModule.h.

## ◆ imbueXRayAttrs()

bool CodeGenModule::imbueXRayAttrs | ( | llvm::Function * | Fn,
|  | SourceLocation | Loc,
|  | StringRef | Category = `StringRef()`
| ) |  | const

Imbue XRay attributes to a function, applying the always/never attribute lists in the process.

Returns true if we did imbue attributes this way, false otherwise.

Definition at line 2000 of file CodeGenModule.cpp.

References clang::ASTContext::DeclMustBeEmitted(), getContext(), clang::ASTContext::getInlineVariableDefinitionKind(), clang::ASTContext::getTargetInfo(), clang::FunctionDecl::getTemplateSpecializationKind(), clang::ValueDecl::getType(), clang::ASTContext::getXRayFilter(), clang::TargetInfo::isTLSSupported(), isTypeConstant(), clang::SourceLocation::isValid(), clang::SD_Static, clang::TSK_ImplicitInstantiation, and clang::ASTContext::WeakUnknown.

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

## ◆ isInSanitizerBlacklist() [1/2]

bool CodeGenModule::isInSanitizerBlacklist | ( | SanitizerMask | Kind,
|  | llvm::Function * | Fn,
|  | SourceLocation | Loc
| ) |  | const

Definition at line 1950 of file CodeGenModule.cpp.

References getContext(), clang::SourceManager::getFileEntryForID(), clang::SourceManager::getMainFileID(), clang::ASTContext::getSanitizerBlacklist(), clang::ASTContext::getSourceManager(), clang::SanitizerBlacklist::isBlacklistedLocation(), clang::SourceLocation::isValid(), and SM.

## ◆ isInSanitizerBlacklist() [2/2]

bool CodeGenModule::isInSanitizerBlacklist | ( | llvm::GlobalVariable * | GV,
|  | SourceLocation | Loc,
|  | QualType | Ty,
|  | StringRef | Category = `StringRef()`
| ) |  | const

Definition at line 1969 of file CodeGenModule.cpp.

References Category, clang::QualType::getAsString(), clang::QualType::getCanonicalType(), getContext(), clang::ASTContext::getSanitizerBlacklist(), clang::QualType::getTypePtr(), clang::QualType::getUnqualifiedType(), clang::QualType::isNull(), clang::Type::isRecordType(), clang::SanitizerSet::Mask, and clang::LangOptions::Sanitize.

## ◆ isPaddedAtomicType() [1/2]

bool CodeGenModule::isPaddedAtomicType | ( | QualType | type | ) |

Definition at line 687 of file CodeGenTypes.cpp.

References clang::Type::castAs().

Referenced by findPeephole().

## ◆ isPaddedAtomicType() [2/2]

bool CodeGenModule::isPaddedAtomicType | ( | const AtomicType * | type | ) |

Definition at line 691 of file CodeGenTypes.cpp.

References clang::ASTContext::getTypeSize(), and clang::AtomicType::getValueType().

## ◆ isTypeConstant()

bool CodeGenModule::isTypeConstant | ( | QualType | Ty,
|  | bool | ExcludeCtor
| ) |  |

isTypeConstant - Determine whether an object of this type can be emitted as a constant.

If ExcludeCtor is true, the duration when the object's constructor runs will not be considered. The caller will need to verify that the object is not written to during its construction.

Definition at line 2999 of file CodeGenModule.cpp.

References clang::CLanguageLinkage, clang::Default, clang::ExternalLinkage, clang::CodeGen::ConstantEmitter::finalize(), clang::QualType::getAddressSpace(), GetAddrOfGlobalVar(), clang::VarDecl::getAnyInitializer(), clang::Type::getAsCXXRecordDecl(), clang::Decl::getAttr(), clang::ASTContext::getBaseElementType(), clang::GlobalDecl::getCanonicalDecl(), clang::VarDecl::getCanonicalDecl(), getContext(), clang::GlobalDecl::getDecl(), getDeclAlign(), getDiags(), GetGlobalValue(), GetGlobalVarAddressSpace(), clang::ASTContext::getLangOpts(), clang::VarDecl::getLanguageLinkage(), clang::LinkageInfo::getLinkage(), clang::NamedDecl::getLinkageAndVisibility(), clang::Decl::getLocation(), getModule(), getOpenMPRuntime(), clang::ASTContext::getTargetAddressSpace(), getTargetCodeGenInfo(), clang::VarDecl::getTLSKind(), getTriple(), clang::ValueDecl::getType(), clang::Decl::hasAttr(), clang::VarDecl::hasDefinition(), clang::VarDecl::hasExternalStorage(), clang::VarDecl::hasInit(), clang::QualType::isConstant(), clang::QualType::isConstQualified(), clang::isExternallyVisible(), clang::Type::isReferenceType(), lookupRepresentativeDecl(), clang::opencl_global, clang::CodeGen::TargetCodeGenInfo::performAddrSpaceCast(), clang::DiagnosticsEngine::Report(), setGVProperties(), setLinkageForGV(), setTLSMode(), clang::VarDecl::TLS_Dynamic, and clang::CodeGen::ConstantEmitter::tryEmitForInitializer().

Referenced by clang::CodeGen::CodeGenFunction::AddInitializerToStaticVarDecl(), clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(), clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit(), imbueXRayAttrs(), isTrivialFiller(), and maybeSetTrivialComdat().

## ◆ lookupRepresentativeDecl()

bool CodeGenModule::lookupRepresentativeDecl | ( | StringRef | MangledName,
|  | GlobalDecl & | Result
| ) |  | const

Definition at line 5170 of file CodeGenModule.cpp.

References clang::CodeGenOptions::CoverageNotesFile, EmitGlobalDeclMetadata(), clang::CodeGen::TargetCodeGenInfo::emitTargetMD(), clang::getClangFullVersion(), getCodeGenOpts(), GetGlobalValue(), getLLVMContext(), getModule(), clang::NamedDecl::getMostRecentDecl(), GetPointerConstant(), getTargetCodeGenInfo(), clang::CodeGen::CodeGenTypeCache::Int16Ty, clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::isHexDigit(), and clang::CodeGenOptions::RecordCommandLine.

Referenced by getMangledNameImpl(), HandleCXXStaticMemberVarInstantiation(), and isTypeConstant().

## ◆ MaybeHandleStaticInExternC()

template<typename SomeDecl >

void CodeGenModule::MaybeHandleStaticInExternC | ( | const SomeDecl * | D,
|  | llvm::GlobalValue * | GV
| ) |  |

If the declaration has internal linkage but is inside an extern "C" linkage specification, prepare to emit an alias for it to the expected name.

Definition at line 3399 of file CodeGenModule.cpp.

References clang::frontend::CPlusPlus, clang::First, getLangOpts(), and clang::InternalLinkage.

Referenced by HandleCXXStaticMemberVarInstantiation(), and maybeSetTrivialComdat().

## ◆ maybeSetTrivialComdat()

void CodeGenModule::maybeSetTrivialComdat | ( | const Decl & | D,
|  | llvm::GlobalObject & | GO
| ) |  |

Definition at line 3456 of file CodeGenModule.cpp.

References AddGlobalAnnotations(), clang::CodeGen::CGCUDARuntime::ConstantDeviceVar, clang::frontend::CPlusPlus, EmitNullConstant(), ErrorUnsupported(), clang::CodeGen::CGCUDARuntime::ExternDeviceVar, GetAddrOfGlobalVar(), clang::VarDecl::getAnyInitializer(), clang::Type::getAsCXXRecordDecl(), clang::Decl::getAttr(), clang::Type::getBaseElementTypeUnsafe(), getCodeGenOpts(), getContext(), getCUDARuntime(), getDeclAlign(), GetGlobalVarAddressSpace(), getLangOpts(), getLLVMLinkageVarDefinition(), getModuleDebugInfo(), clang::ASTContext::getTargetAddressSpace(), clang::ASTContext::getTargetInfo(), clang::VarDecl::getTLSKind(), clang::TargetInfo::getTriple(), clang::Expr::getType(), clang::ValueDecl::getType(), getTypes(), clang::Decl::hasAttr(), clang::VarDecl::hasDefinition(), clang::VarDecl::hasExternalStorage(), clang::CXXRecordDecl::hasTrivialDestructor(), clang::InternalLinkage, clang::Type::isIncompleteType(), clang::Type::isReferenceType(), clang::Type::isSamplerT(), clang::VarDecl::isStaticLocal(), isTypeConstant(), clang::codegenoptions::LimitedDebugInfo, MaybeHandleStaticInExternC(), clang::ASTContext::PSF_Write, clang::CodeGen::CGCUDARuntime::registerDeviceVar(), clang::ASTContext::SectionInfo::SectionFlags, clang::ASTContext::SectionInfos, setTLSMode(), shouldBeInCOMDAT(), clang::VarDecl::TLS_Dynamic, and clang::CodeGen::Type.

Referenced by emitConstructorDestructorAlias(), emitCXXConstructor(), and HandleCXXStaticMemberVarInstantiation().

## ◆ mergeTBAAInfoForCast()

TBAAAccessInfo CodeGenModule::mergeTBAAInfoForCast | ( | TBAAAccessInfo | SourceInfo,
|  | TBAAAccessInfo | TargetInfo
| ) |  |

mergeTBAAInfoForCast - Get merged TBAA information for the purposes of type casts.

Definition at line 660 of file CodeGenModule.cpp.

Referenced by emitOMPArraySectionBase(), and clang::CodeGen::CodeGenFunction::EmitPointerWithAlignment().

## ◆ mergeTBAAInfoForConditionalOperator()

TBAAAccessInfo CodeGenModule::mergeTBAAInfoForConditionalOperator | ( | TBAAAccessInfo | InfoA,
|  | TBAAAccessInfo | InfoB
| ) |  |

mergeTBAAInfoForConditionalOperator - Get merged TBAA information for the purposes of conditional operator.

Definition at line 668 of file CodeGenModule.cpp.

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

## ◆ mergeTBAAInfoForMemoryTransfer()

TBAAAccessInfo CodeGenModule::mergeTBAAInfoForMemoryTransfer | ( | TBAAAccessInfo | DestInfo,
|  | TBAAAccessInfo | SrcInfo
| ) |  |

mergeTBAAInfoForMemoryTransfer - Get merged TBAA information for the purposes of memory transfer calls.

Definition at line 676 of file CodeGenModule.cpp.

## ◆ NeedAllVtablesTypeId()

bool CodeGenModule::NeedAllVtablesTypeId | ( |  | ) | const

Returns whether this module needs the "all-vtables" type identifier.

Definition at line 5411 of file CodeGenModule.cpp.

Referenced by AddVTableTypeMetadata().

## ◆ RefreshTypeCacheForClass()

void CodeGenModule::RefreshTypeCacheForClass | ( | const CXXRecordDecl * | Class | ) |

Definition at line 618 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypes::RefreshTypeCacheForClass().

## ◆ Release()

void CodeGenModule::Release | ( |  | ) |

Finalize LLVM code generation.

Definition at line 391 of file CodeGenModule.cpp.

References clang::TargetInfo::checkCFProtectionBranchSupported(), clang::TargetInfo::checkCFProtectionReturnSupported(), clang::CodeGenOptions::CodeModel, clang::CodeGen::CodeGenFunction::EmitCfiCheckFail(), clang::CodeGen::CodeGenFunction::EmitCfiCheckStub(), EmitDeferredUnusedCoverageMappings(), EmitGlobalAnnotations(), clang::serialized_diags::Error, getCodeGenOpts(), getDiags(), clang::ASTContext::getLangOpts(), getModule(), clang::ASTContext::getTargetInfo(), getTriple(), clang::TargetInfo::getTriple(), clang::ASTContext::getTypeSizeInChars(), clang::ASTContext::getWideCharType(), clang::CodeGen::InstrProfStats::hasDiagnostics(), clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::CodeGen::InstrProfStats::reportDiagnostics(), and clang::serialized_diags::Warning.

## ◆ ReturnSlotInterferesWithArgs()

bool CodeGenModule::ReturnSlotInterferesWithArgs | ( | const CGFunctionInfo & | FI | ) |

Return true iff the given type uses an argument slot when 'sret' is used as a return type.

Definition at line 1511 of file CGCall.cpp.

Referenced by clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), and isWeakLinkedClass().

## ◆ ReturnTypeUsesFP2Ret()

bool CodeGenModule::ReturnTypeUsesFP2Ret | ( | QualType | ResultType | ) |

Return true iff the given type uses 'fp2ret' when used as a return type.

Definition at line 1533 of file CGCall.cpp.

References clang::Type::getAs(), clang::CodeGen::CodeGenTypes::getTarget(), and clang::TargetInfo::useObjCFP2RetForComplexLongDouble().

Referenced by isWeakLinkedClass().

## ◆ ReturnTypeUsesFPRet()

bool CodeGenModule::ReturnTypeUsesFPRet | ( | QualType | ResultType | ) |

Return true iff the given type uses 'fpret' when used as a return type.

Definition at line 1516 of file CGCall.cpp.

References clang::TargetInfo::Double, clang::TargetInfo::Float, clang::Type::getAs(), clang::CodeGen::CodeGenTypes::getTarget(), clang::TargetInfo::LongDouble, and clang::TargetInfo::useObjCFPRetForRealType().

Referenced by isWeakLinkedClass().

## ◆ ReturnTypeUsesSRet()

bool CodeGenModule::ReturnTypeUsesSRet | ( | const CGFunctionInfo & | FI | ) |

Return true iff the given type uses 'sret' when used as a return type.

Definition at line 1506 of file CGCall.cpp.

References clang::CodeGen::CGFunctionInfo::getReturnInfo(), and clang::CodeGen::ABIArgInfo::isIndirect().

Referenced by clang::CodeGen::CodeGenFunction::GenerateVarArgsThunk(), and isWeakLinkedClass().

## ◆ setAddrOfConstantCompoundLiteral()

void CodeGenModule::setAddrOfConstantCompoundLiteral | ( | const CompoundLiteralExpr * | CLE,
|  | llvm::GlobalVariable * | GV
| ) |  |

Notes that CLE's GlobalVariable is GV.

Asserts that CLE isn't already emitted.

Definition at line 2007 of file CGExprConstant.cpp.

## ◆ setAddrOfGlobalBlock()

void CodeGenModule::setAddrOfGlobalBlock | ( | const BlockExpr * | BE,
|  | llvm::Constant * | Addr
| ) |  |

Notes that BE's global block is available via Addr.

Asserts that BE isn't already emitted.

Definition at line 1363 of file CGBlocks.cpp.

Referenced by buildGlobalBlock().

## ◆ setAtomicGetterHelperFnMap()

void clang::CodeGen::CodeGenModule::setAtomicGetterHelperFnMap | ( | QualType | Ty,
|  | llvm::Constant * | Fn
| ) |  |
| inline

Definition at line 632 of file CodeGenModule.h.

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

## ◆ setAtomicSetterHelperFnMap()

void clang::CodeGen::CodeGenModule::setAtomicSetterHelperFnMap | ( | QualType | Ty,
|  | llvm::Constant * | Fn
| ) |  |
| inline

Definition at line 624 of file CodeGenModule.h.

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

## ◆ SetCommonAttributes()

void CodeGenModule::SetCommonAttributes | ( | GlobalDecl | GD,
|  | llvm::GlobalValue * | GV
| ) |  |

Set attributes which are common to any form of a global definition (alias, Objective-C method, function, global variable).

NOTE: This should only be called for definitions.

Definition at line 1375 of file CodeGenModule.cpp.

References addUsedGlobal(), clang::TargetOptions::CPU, clang::DefaultVisibility, clang::TargetOptions::Features, clang::Decl::getAttr(), clang::GlobalDecl::getDecl(), getFunctionFeatureMap(), clang::Redeclarable< decl_type >::getMostRecentDecl(), getTarget(), getTargetCodeGenInfo(), clang::TargetInfo::getTargetOpts(), clang::Decl::hasAttr(), clang::SD_Static, setGVProperties(), and clang::CodeGen::TargetCodeGenInfo::setTargetAttributes().

Referenced by emitConstructorDestructorAlias(), HandleCXXStaticMemberVarInstantiation(), and TryEmitBaseDestructorAsAlias().

## ◆ setDLLImportDLLExport() [1/2]

void CodeGenModule::setDLLImportDLLExport | ( | llvm::GlobalValue * | GV,
|  | GlobalDecl | D
| ) |  | const

Definition at line 816 of file CodeGenModule.cpp.

References getCXXABI(), clang::GlobalDecl::getDecl(), clang::GlobalDecl::getDtorType(), and clang::CodeGen::CGCXXABI::setCXXDestructorDLLStorage().

Referenced by clang::CodeGen::CGCXXABI::setCXXDestructorDLLStorage(), and setGVProperties().

## ◆ setDLLImportDLLExport() [2/2]

void CodeGenModule::setDLLImportDLLExport | ( | llvm::GlobalValue * | GV,
|  | const NamedDecl * | D
| ) |  | const

Definition at line 827 of file CodeGenModule.cpp.

References clang::Decl::hasAttr(), and clang::NamedDecl::isExternallyVisible().

## ◆ setDSOLocal()

void CodeGenModule::setDSOLocal | ( | llvm::GlobalValue * | GV | ) | const

Definition at line 812 of file CodeGenModule.cpp.

References shouldAssumeDSOLocal().

Referenced by CanUseSingleInheritance(), configureBlocksRuntimeObject(), clang::CodeGen::CodeGenFunction::EmitCfiCheckStub(), clang::CodeGen::CodeGenFunction::EmitCfiSlowPathCheck(), GenerateStringLiteral(), GetAddrOfConstantCFString(), and setGlobalVisibilityAndLocal().

## ◆ setFunctionLinkage()

void clang::CodeGen::CodeGenModule::setFunctionLinkage | ( | GlobalDecl | GD,
|  | llvm::Function * | F
| ) |  |
| inline

Definition at line 1153 of file CodeGenModule.h.

References Category.

Referenced by codegenCXXStructor(), HandleCXXStaticMemberVarInstantiation(), and setThunkProperties().

## ◆ setGlobalVisibility()

void CodeGenModule::setGlobalVisibility | ( | llvm::GlobalValue * | GV,
|  | const NamedDecl * | D
| ) |  | const

Set the visibility for the given LLVM GlobalValue.

Definition at line 723 of file CodeGenModule.cpp.

References clang::DefaultVisibility, clang::NamedDecl::getLinkageAndVisibility(), GetLLVMVisibility(), clang::LinkageInfo::getVisibility(), and clang::LinkageInfo::isVisibilityExplicit().

Referenced by setGlobalVisibilityAndLocal().

## ◆ setGlobalVisibilityAndLocal()

void CodeGenModule::setGlobalVisibilityAndLocal | ( | llvm::GlobalValue * | GV,
|  | const NamedDecl * | D
| ) |  | const

Definition at line 849 of file CodeGenModule.cpp.

References setDSOLocal(), and setGlobalVisibility().

Referenced by setGVProperties().

## ◆ setGVProperties() [1/2]

void CodeGenModule::setGVProperties | ( | llvm::GlobalValue * | GV,
|  | GlobalDecl | GD
| ) |  | const

Set visibility, dllimport/dllexport and dso_local.

This must be called after dllimport/dllexport is set.

Definition at line 837 of file CodeGenModule.cpp.

References clang::GlobalDecl::getDecl(), setDLLImportDLLExport(), and setGlobalVisibilityAndLocal().

Referenced by CreateFunctionTypeMetadataForIcall(), HandleCXXStaticMemberVarInstantiation(), isTypeConstant(), SetCommonAttributes(), and setThunkProperties().

## ◆ setGVProperties() [2/2]

void CodeGenModule::setGVProperties | ( | llvm::GlobalValue * | GV,
|  | const NamedDecl * | D
| ) |  | const

Definition at line 843 of file CodeGenModule.cpp.

References setDLLImportDLLExport(), and setGlobalVisibilityAndLocal().

## ◆ SetInternalFunctionAttributes()

void CodeGenModule::SetInternalFunctionAttributes | ( | GlobalDecl | GD,
|  | llvm::Function * | F,
|  | const CGFunctionInfo & | FI
| ) |  |

Set the attributes on the LLVM function for the given decl and function info.

This applies attributes necessary for handling the ABI as well as user specified attributes like section.

Definition at line 1482 of file CodeGenModule.cpp.

References clang::GlobalDecl::getDecl(), clang::InternalLinkage, SetLLVMFunctionAttributes(), and SetLLVMFunctionAttributesForDefinition().

Referenced by emitDestructorsFunction(), emitInterWarpCopyFunction(), clang::CodeGen::CGOpenMPRuntimeNVPTX::emitOutlinedFunctionCall(), emitOutlinedFunctionPrologue(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), emitShuffleAndReduceFunction(), emitTaskDupFunction(), emitTaskPrivateMappingFunction(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction(), getMasterThreadID(), setBlockHelperAttributesVisibility(), and clang::CodeGen::CodeGenFunction::StartObjCMethod().

## ◆ SetLLVMFunctionAttributes()

void CodeGenModule::SetLLVMFunctionAttributes | ( | GlobalDecl | GD,
|  | const CGFunctionInfo & | Info,
|  | llvm::Function * | F
| ) |  |

Set the LLVM function attributes (sext, zext, etc).

Definition at line 1166 of file CodeGenModule.cpp.

References ConstructAttributeList().

Referenced by CreateFunctionTypeMetadataForIcall(), getThreadLocalWrapperLinkage(), setBlockHelperAttributesVisibility(), and SetInternalFunctionAttributes().

## ◆ SetLLVMFunctionAttributesForDefinition()

void CodeGenModule::SetLLVMFunctionAttributesForDefinition | ( | const Decl * | D,
|  | llvm::Function * | F
| ) |  |

Set the LLVM function attributes which only apply to a function definition.

Definition at line 1224 of file CodeGenModule.cpp.

References CreateFunctionTypeMetadataForIcall(), CreateMetadataIdentifierForType(), clang::ASTContext::getCharWidth(), getCXXABI(), clang::Decl::getMaxAlignment(), clang::ASTContext::getMemberPointerType(), getMostBaseClasses(), clang::ASTContext::getRecordType(), getTarget(), clang::FunctionDecl::getTemplateInstantiationPattern(), clang::QualType::getTypePtr(), clang::Decl::hasAttr(), hasUnwindExceptions(), Id, clang::FunctionDecl::isInlined(), clang::CodeGenOptions::OnlyAlwaysInlining, clang::CodeGenOptions::OnlyHintInlining, clang::Redeclarable< decl_type >::redecls(), requiresMemberFunctionPointerTypeMetadata(), clang::LangOptions::SSPOn, clang::LangOptions::SSPReq, and clang::LangOptions::SSPStrong.

Referenced by codegenCXXStructor(), HandleCXXStaticMemberVarInstantiation(), setBlockHelperAttributesVisibility(), and SetInternalFunctionAttributes().

## ◆ setStaticLocalDeclAddress()

void clang::CodeGen::CodeGenModule::setStaticLocalDeclAddress | ( | const VarDecl * | D,
|  | llvm::Constant * | C
| ) |  |
| inline

Definition at line 601 of file CodeGenModule.h.

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

## ◆ setStaticLocalDeclGuardAddress()

void clang::CodeGen::CodeGenModule::setStaticLocalDeclGuardAddress | ( | const VarDecl * | D,
|  | llvm::GlobalVariable * | C
| ) |  |
| inline

Definition at line 613 of file CodeGenModule.h.

## ◆ setTLSMode()

void CodeGenModule::setTLSMode | ( | llvm::GlobalValue * | GV,
|  | const VarDecl & | D
| ) |  | const

Set the TLS mode for the given LLVM GlobalValue for the thread-local variable declaration D.

Definition at line 878 of file CodeGenModule.cpp.

References clang::Decl::getAttr(), GetLLVMTLSModel(), and clang::VarDecl::getTLSKind().

Referenced by HandleCXXStaticMemberVarInstantiation(), isTypeConstant(), and maybeSetTrivialComdat().

## ◆ setTypeDescriptorInMap()

void clang::CodeGen::CodeGenModule::setTypeDescriptorInMap | ( | QualType | Ty,
|  | llvm::Constant * | C
| ) |  |
| inline

Definition at line 640 of file CodeGenModule.h.

## ◆ shouldUseTBAA()

bool clang::CodeGen::CodeGenModule::shouldUseTBAA | ( |  | ) | const
| inline

Definition at line 672 of file CodeGenModule.h.

## ◆ supportsCOMDAT()

bool CodeGenModule::supportsCOMDAT | ( |  | ) | const

Definition at line 9242 of file TargetInfo.cpp.

Referenced by GenerateStringLiteral(), getClangCallTerminateFn(), setThunkProperties(), and shouldBeInCOMDAT().

## ◆ TryEmitBaseDestructorAsAlias()

bool CodeGenModule::TryEmitBaseDestructorAsAlias | ( | const CXXDestructorDecl * | D | ) |

Try to emit a base destructor as an alias to its primary base-class destructor.

Definition at line 34 of file CGCXX.cpp.

References addReplacement(), clang::CodeGen::Base, clang::CXXRecordDecl::bases(), clang::serialized_diags::create(), clang::Dtor_Base, clang::RecordDecl::field_empty(), clang::RecordDecl::fields(), GetAddrOfGlobal(), clang::Type::getAs(), clang::ASTContext::getASTRecordLayout(), clang::ASTRecordLayout::getBaseClassOffset(), getCodeGenOpts(), clang::GlobalDecl::getDecl(), clang::CXXRecordDecl::getDestructor(), getFunctionLinkage(), clang::CodeGen::CodeGenTypes::GetFunctionType(), GetGlobalValue(), getMangledName(), getModule(), clang::CXXRecordDecl::getNumVBases(), clang::CXXMethodDecl::getParent(), getTriple(), clang::ValueDecl::getType(), getTypes(), clang::Decl::hasAttr(), clang::FunctionDecl::hasTrivialBody(), clang::CharUnits::isZero(), clang::RecordDecl::mayInsertExtraPadding(), SetCommonAttributes(), and clang::CodeGen::Type.

Referenced by emitConstructorDestructorAlias(), and emitCXXDestructor().

## ◆ UpdateCompletedType()

void CodeGenModule::UpdateCompletedType | ( | const TagDecl * | TD | ) |

Definition at line 613 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypes::UpdateCompletedType().

## Member Data Documentation

## ◆ ByrefHelpersCache

llvm::FoldingSet<BlockByrefHelpers> clang::CodeGen::CodeGenModule::ByrefHelpersCache

Definition at line 874 of file CodeGenModule.h.

Referenced by buildByrefHelpers().

## ◆ GlobalUniqueCount

int clang::CodeGen::CodeGenModule::GlobalUniqueCount

Definition at line 511 of file CodeGenModule.h.

## ◆ IsOSVersionAtLeastFn

llvm::Constant* clang::CodeGen::CodeGenModule::IsOSVersionAtLeastFn = nullptr

Definition at line 589 of file CodeGenModule.h.

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

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

- lib/CodeGen/CodeGenModule.h
- lib/CodeGen/CGBlocks.cpp
- lib/CodeGen/CGBuiltin.cpp
- lib/CodeGen/CGCall.cpp
- lib/CodeGen/CGClass.cpp
- lib/CodeGen/CGCXX.cpp
- lib/CodeGen/CGDecl.cpp
- lib/CodeGen/CGDeclCXX.cpp
- lib/CodeGen/CGException.cpp
- lib/CodeGen/CGExpr.cpp
- lib/CodeGen/CGExprConstant.cpp
- lib/CodeGen/CGObjC.cpp
- lib/CodeGen/CGVTables.cpp
- lib/CodeGen/CodeGenModule.cpp
- lib/CodeGen/CodeGenTypes.cpp
- lib/CodeGen/ItaniumCXXABI.cpp
- lib/CodeGen/TargetInfo.cpp