clang 19.0.0git
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 "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/CodeGenModule.h"

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

Classes

struct  Structor
 

Public Types

typedef std::vector< StructorCtorList
 

Public Member Functions

 CodeGenModule (ASTContext &C, IntrusiveRefCntPtr< llvm::vfs::FileSystem > FS, 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.
 
bool getExpressionLocationsEnabled () const
 Return true if we should emit location information for expressions.
 
CGObjCRuntimegetObjCRuntime ()
 Return a reference to the configured Objective-C runtime.
 
bool hasObjCRuntime ()
 Return true iff an Objective-C runtime has been configured.
 
const std::string & getModuleNameHash () const
 
CGOpenCLRuntimegetOpenCLRuntime ()
 Return a reference to the configured OpenCL runtime.
 
CGOpenMPRuntimegetOpenMPRuntime ()
 Return a reference to the configured OpenMP runtime.
 
CGCUDARuntimegetCUDARuntime ()
 Return a reference to the configured CUDA runtime.
 
CGHLSLRuntimegetHLSLRuntime ()
 Return a reference to the configured HLSL runtime.
 
ObjCEntrypointsgetObjCEntrypoints () const
 
InstrProfStatsgetPGOStats ()
 
llvm::IndexedInstrProfReader * getPGOReader () const
 
CoverageMappingModuleGengetCoverageMapping () 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)
 
Address createUnnamedGlobalFrom (const VarDecl &D, llvm::Constant *Constant, CharUnits Align)
 
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)
 
CGDebugInfogetModuleDebugInfo ()
 
llvm::MDNode * getNoObjCARCExceptionsMetadata ()
 
ASTContextgetContext () const
 
const LangOptionsgetLangOpts () const
 
const IntrusiveRefCntPtr< llvm::vfs::FileSystem > & getFileSystem () const
 
const HeaderSearchOptionsgetHeaderSearchOpts () const
 
const PreprocessorOptionsgetPreprocessorOpts () const
 
const CodeGenOptionsgetCodeGenOpts () const
 
llvm::Module & getModule () const
 
DiagnosticsEnginegetDiags () const
 
const llvm::DataLayout & getDataLayout () const
 
const TargetInfogetTarget () const
 
const llvm::Triple & getTriple () const
 
bool supportsCOMDAT () const
 
void maybeSetTrivialComdat (const Decl &D, llvm::GlobalObject &GO)
 
CGCXXABIgetCXXABI () const
 
llvm::LLVMContext & getLLVMContext ()
 
bool shouldUseTBAA () const
 
const TargetCodeGenInfogetTargetCodeGenInfo ()
 
CodeGenTypesgetTypes ()
 
CodeGenVTablesgetVTables ()
 
ItaniumVTableContextgetItaniumVTableContext ()
 
const ItaniumVTableContextgetItaniumVTableContext () const
 
MicrosoftVTableContextgetMicrosoftVTableContext ()
 
CtorListgetGlobalCtors ()
 
CtorListgetGlobalDtors ()
 
llvm::MDNode * getTBAATypeInfo (QualType QTy)
 getTBAATypeInfo - Get metadata used to describe accesses to objects of the given type.
 
TBAAAccessInfo getTBAAAccessInfo (QualType AccessType)
 getTBAAAccessInfo - Get TBAA information that describes an access to an object of the given type.
 
TBAAAccessInfo getTBAAVTablePtrAccessInfo (llvm::Type *VTablePtrType)
 getTBAAVTablePtrAccessInfo - Get the TBAA information that describes an access to a virtual table pointer.
 
llvm::MDNode * getTBAAStructInfo (QualType QTy)
 
llvm::MDNode * getTBAABaseTypeInfo (QualType QTy)
 getTBAABaseTypeInfo - Get metadata that describes the given base access type.
 
llvm::MDNode * getTBAAAccessTagInfo (TBAAAccessInfo Info)
 getTBAAAccessTagInfo - Get TBAA tag for a given memory access.
 
TBAAAccessInfo mergeTBAAInfoForCast (TBAAAccessInfo SourceInfo, TBAAAccessInfo TargetInfo)
 mergeTBAAInfoForCast - Get merged TBAA information for the purposes of type casts.
 
TBAAAccessInfo mergeTBAAInfoForConditionalOperator (TBAAAccessInfo InfoA, TBAAAccessInfo InfoB)
 mergeTBAAInfoForConditionalOperator - Get merged TBAA information for the purposes of conditional operator.
 
TBAAAccessInfo mergeTBAAInfoForMemoryTransfer (TBAAAccessInfo DestInfo, TBAAAccessInfo SrcInfo)
 mergeTBAAInfoForMemoryTransfer - Get merged TBAA information for the purposes of memory transfer calls.
 
TBAAAccessInfo getTBAAInfoForSubobject (LValue Base, QualType AccessType)
 getTBAAInfoForSubobject - Get TBAA information for an access with a given base lvalue.
 
bool isPaddedAtomicType (QualType type)
 
bool isPaddedAtomicType (const AtomicType *type)
 
void DecorateInstructionWithTBAA (llvm::Instruction *Inst, TBAAAccessInfo TBAAInfo)
 DecorateInstructionWithTBAA - Decorate the instruction with a TBAA tag.
 
void DecorateInstructionWithInvariantGroup (llvm::Instruction *I, const CXXRecordDecl *RD)
 Adds !invariant.barrier !tag to instruction.
 
llvm::ConstantInt * getSize (CharUnits numChars)
 Emit the given number of characters as a value of type size_t.
 
void setGlobalVisibility (llvm::GlobalValue *GV, const NamedDecl *D) const
 Set the visibility for the given LLVM GlobalValue.
 
void setDSOLocal (llvm::GlobalValue *GV) const
 
bool shouldMapVisibilityToDLLExport (const NamedDecl *D) 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.
 
void setGVProperties (llvm::GlobalValue *GV, const NamedDecl *D) const
 
void setGVPropertiesAux (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.
 
llvm::GlobalVariable::ThreadLocalMode GetDefaultLLVMTLSModel () const
 Get LLVM TLS mode from CodeGenOptions.
 
llvm::Constant * GetAddrOfGlobal (GlobalDecl GD, ForDefinition_t IsForDefinition=NotForDefinition)
 
llvm::GlobalVariable * CreateOrReplaceCXXRuntimeVariable (StringRef Name, llvm::Type *Ty, llvm::GlobalValue::LinkageTypes Linkage, llvm::Align Alignment)
 Will return a global variable of the given type.
 
llvm::Function * CreateGlobalInitOrCleanUpFunction (llvm::FunctionType *ty, const Twine &name, const CGFunctionInfo &FI, SourceLocation Loc=SourceLocation(), bool TLS=false, llvm::GlobalVariable::LinkageTypes Linkage=llvm::GlobalVariable::InternalLinkage)
 
LangAS GetGlobalVarAddressSpace (const VarDecl *D)
 Return the AST address space of the underlying global variable for D, as determined by its declaration.
 
LangAS GetGlobalConstantAddressSpace () const
 Return the AST address space of constant literal, which is used to emit the constant literal as global variable in LLVM IR.
 
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.
 
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.
 
llvm::Constant * GetFunctionStart (const ValueDecl *Decl)
 
bool shouldEmitRTTI (bool ForEH=false)
 
llvm::Constant * GetAddrOfRTTIDescriptor (QualType Ty, bool ForEH=false)
 Get the address of the RTTI descriptor for the given type.
 
ConstantAddress GetAddrOfMSGuidDecl (const MSGuidDecl *GD)
 Get the address of a GUID.
 
ConstantAddress GetAddrOfUnnamedGlobalConstantDecl (const UnnamedGlobalConstantDecl *GCD)
 Get the address of a UnnamedGlobalConstant.
 
ConstantAddress GetAddrOfTemplateParamObject (const TemplateParamObjectDecl *TPO)
 Get the address of a template parameter object.
 
llvm::Constant * GetAddrOfThunk (StringRef Name, llvm::Type *FnTy, GlobalDecl GD)
 Get the address of the thunk for the given global decl.
 
ConstantAddress GetWeakRefReference (const ValueDecl *VD)
 Get a reference to the target of VD.
 
CharUnits getClassPointerAlignment (const CXXRecordDecl *CD)
 Returns the assumed alignment of an opaque pointer to the given class.
 
CharUnits getMinimumClassObjectSize (const CXXRecordDecl *CD)
 Returns the minimum object size for an object of the given class type (or a class derived from it).
 
CharUnits getMinimumObjectSize (QualType Ty)
 Returns the minimum object size for an object of the given type.
 
CharUnits getVBaseAlignment (CharUnits DerivedAlign, const CXXRecordDecl *Derived, const CXXRecordDecl *VBase)
 Returns the assumed alignment of a virtual base of a class.
 
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.
 
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.
 
int getUniqueBlockCount ()
 Fetches the global unique block count.
 
llvm::Type * getBlockDescriptorType ()
 Fetches the type of a generic block descriptor.
 
llvm::Type * getGenericBlockLiteralType ()
 The type of a generic block literal.
 
llvm::Constant * GetAddrOfGlobalBlock (const BlockExpr *BE, StringRef Name)
 Gets the address of a block which requires no captures.
 
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.
 
void setAddrOfGlobalBlock (const BlockExpr *BE, llvm::Constant *Addr)
 Notes that BE's global block is available via Addr.
 
ConstantAddress GetAddrOfConstantCFString (const StringLiteral *Literal)
 Return a pointer to a constant CFString object for the given string.
 
llvm::Constant * GetConstantArrayFromStringLiteral (const StringLiteral *E)
 Return a constant array for the given string.
 
ConstantAddress GetAddrOfConstantStringFromLiteral (const StringLiteral *S, StringRef Name=".str")
 Return a pointer to a constant array for the given string literal.
 
ConstantAddress GetAddrOfConstantStringFromObjCEncode (const ObjCEncodeExpr *)
 Return a pointer to a constant array for the given ObjCEncodeExpr node.
 
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.
 
ConstantAddress GetAddrOfConstantCompoundLiteral (const CompoundLiteralExpr *E)
 Returns a pointer to a constant global variable for the given file-scope compound literal expression.
 
llvm::GlobalVariable * getAddrOfConstantCompoundLiteralIfEmitted (const CompoundLiteralExpr *E)
 If it's been emitted already, returns the GlobalVariable corresponding to a compound literal.
 
void setAddrOfConstantCompoundLiteral (const CompoundLiteralExpr *CLE, llvm::GlobalVariable *GV)
 Notes that CLE's GlobalVariable is GV.
 
ConstantAddress GetAddrOfGlobalTemporary (const MaterializeTemporaryExpr *E, const Expr *Inner)
 Returns a pointer to a global variable representing a temporary with static or thread storage duration.
 
QualType getObjCFastEnumerationStateType ()
 Retrieve the record type that describes the state of an Objective-C fast enumeration loop (for..in).
 
llvm::Function * codegenCXXStructor (GlobalDecl GD)
 
llvm::Constant * getAddrOfCXXStructor (GlobalDecl GD, 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.
 
llvm::FunctionCallee getAddrAndTypeOfCXXStructor (GlobalDecl GD, const CGFunctionInfo *FnInfo=nullptr, llvm::FunctionType *FnType=nullptr, bool DontDefer=false, ForDefinition_t IsForDefinition=NotForDefinition)
 
llvm::Constant * getBuiltinLibFunction (const FunctionDecl *FD, unsigned BuiltinID)
 Given a builtin id for a function like "__builtin_fabsf", return a Function* for "fabsf".
 
llvm::Function * getIntrinsic (unsigned IID, ArrayRef< llvm::Type * > Tys=std::nullopt)
 
void EmitTopLevelDecl (Decl *D)
 Emit code for a single top level declaration.
 
void AddDeferredUnusedCoverageMapping (Decl *D)
 Stored a deferred empty coverage mapping for an unused and thus uninstrumented top level declaration.
 
void ClearUnusedCoverageMapping (const Decl *D)
 Remove the deferred empty coverage mapping as this declaration is actually instrumented.
 
void EmitDeferredUnusedCoverageMappings ()
 Emit all the deferred coverage mappings for the uninstrumented functions.
 
void EmitMainVoidAlias ()
 Emit an alias for "main" if it has no arguments (needed for wasm).
 
void HandleCXXStaticMemberVarInstantiation (VarDecl *VD)
 Tell the consumer that this variable has been instantiated.
 
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.
 
void addUsedGlobal (llvm::GlobalValue *GV)
 Add a global to a list to be added to the llvm.used metadata.
 
void addCompilerUsedGlobal (llvm::GlobalValue *GV)
 Add a global to a list to be added to the llvm.compiler.used metadata.
 
void addUsedOrCompilerUsedGlobal (llvm::GlobalValue *GV)
 Add a global to a list to be added to the llvm.compiler.used metadata.
 
void AddCXXDtorEntry (llvm::FunctionCallee DtorFn, llvm::Constant *Object)
 Add a destructor and object to add to the C++ global destructor function.
 
void AddCXXStermFinalizerEntry (llvm::FunctionCallee DtorFn)
 Add an sterm finalizer to the C++ global cleanup function.
 
void AddCXXStermFinalizerToGlobalDtor (llvm::Function *StermFinalizer, int Priority)
 Add an sterm finalizer to its own llvm.global_dtors entry.
 
void AddCXXPrioritizedStermFinalizerEntry (llvm::Function *StermFinalizer, int Priority)
 
llvm::FunctionCallee CreateRuntimeFunction (llvm::FunctionType *Ty, StringRef Name, llvm::AttributeList ExtraAttrs=llvm::AttributeList(), bool Local=false, bool AssumeConvergent=false)
 Create or return a runtime function declaration with the specified type and name.
 
llvm::Constant * CreateRuntimeVariable (llvm::Type *Ty, StringRef Name)
 Create a new runtime global variable with the specified type and name.
 
llvm::Function * getLLVMLifetimeStartFn ()
 Lazily declare the @llvm.lifetime.start intrinsic.
 
llvm::Function * getLLVMLifetimeEndFn ()
 Lazily declare the @llvm.lifetime.end intrinsic.
 
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.
 
llvm::Constant * EmitNullConstant (QualType T)
 Return the result of value-initializing the given type, i.e.
 
llvm::Constant * EmitNullConstantForBase (const CXXRecordDecl *Record)
 Return a null constant appropriate for zero-initializing a base class with the given type.
 
void Error (SourceLocation loc, StringRef error)
 Emit a general error that something can't be done.
 
void ErrorUnsupported (const Stmt *S, const char *Type)
 Print out an error that codegen doesn't support the specified stmt yet.
 
void ErrorUnsupported (const Decl *D, const char *Type)
 Print out an error that codegen doesn't support the specified decl yet.
 
void SetInternalFunctionAttributes (GlobalDecl GD, llvm::Function *F, const CGFunctionInfo &FI)
 Set the attributes on the LLVM function for the given decl and function info.
 
void SetLLVMFunctionAttributes (GlobalDecl GD, const CGFunctionInfo &Info, llvm::Function *F, bool IsThunk)
 Set the LLVM function attributes (sext, zext, etc).
 
void SetLLVMFunctionAttributesForDefinition (const Decl *D, llvm::Function *F)
 Set the LLVM function attributes which only apply to a function definition.
 
void setLLVMFunctionFEnvAttributes (const FunctionDecl *D, llvm::Function *F)
 Set the LLVM function attributes that represent floating point environment.
 
bool ReturnTypeUsesSRet (const CGFunctionInfo &FI)
 Return true iff the given type uses 'sret' when used as a return type.
 
bool ReturnSlotInterferesWithArgs (const CGFunctionInfo &FI)
 Return true iff the given type uses an argument slot when 'sret' is used as a return type.
 
bool ReturnTypeUsesFPRet (QualType ResultType)
 Return true iff the given type uses 'fpret' when used as a return type.
 
bool ReturnTypeUsesFP2Ret (QualType ResultType)
 Return true iff the given type uses 'fp2ret' when used as a return type.
 
void ConstructAttributeList (StringRef Name, const CGFunctionInfo &Info, CGCalleeInfo CalleeInfo, llvm::AttributeList &Attrs, unsigned &CallingConv, bool AttrOnCallSite, bool IsThunk)
 Get the LLVM attributes and calling convention to use for a particular function type.
 
void AdjustMemoryAttribute (StringRef Name, CGCalleeInfo CalleeInfo, llvm::AttributeList &Attrs)
 Adjust Memory attribute to ensure that the BE gets the right attribute.
 
void addDefaultFunctionDefinitionAttributes (llvm::AttrBuilder &attrs)
 Like the overload taking a Function &, but intended specifically for frontends that want to build on Clang's target-configuration logic.
 
StringRef getMangledName (GlobalDecl GD)
 
StringRef getBlockMangledName (GlobalDecl GD, const BlockDecl *BD)
 
const GlobalDecl getMangledNameDecl (StringRef)
 
void EmitTentativeDefinition (const VarDecl *D)
 
void EmitExternalDeclaration (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.
 
void RefreshTypeCacheForClass (const CXXRecordDecl *Class)
 
void AppendLinkerOptions (StringRef Opts)
 Appends Opts to the "llvm.linker.options" metadata value.
 
void AddDetectMismatch (StringRef Name, StringRef Value)
 Appends a detect mismatch command to the linker options.
 
void AddDependentLib (StringRef Lib)
 Appends a dependent lib to the appropriate metadata value.
 
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.
 
CharUnits GetTargetTypeStoreSize (llvm::Type *Ty) const
 Return the store size, in character units, of the given LLVM type.
 
llvm::GlobalValue::LinkageTypes getLLVMLinkageForDeclarator (const DeclaratorDecl *D, GVALinkage Linkage)
 Returns LLVM linkage for a declarator.
 
llvm::GlobalValue::LinkageTypes getLLVMLinkageVarDefinition (const VarDecl *VD)
 Returns LLVM linkage for a declarator.
 
void EmitGlobalAnnotations ()
 Emit all the global annotations.
 
llvm::Constant * EmitAnnotationString (StringRef Str)
 Emit an annotation string.
 
llvm::Constant * EmitAnnotationUnit (SourceLocation Loc)
 Emit the annotation's translation unit.
 
llvm::Constant * EmitAnnotationLineNo (SourceLocation L)
 Emit the annotation line number.
 
llvm::Constant * EmitAnnotationArgs (const AnnotateAttr *Attr)
 Emit additional args of the annotation.
 
llvm::Constant * EmitAnnotateAttr (llvm::GlobalValue *GV, const AnnotateAttr *AA, SourceLocation L)
 Generate the llvm::ConstantStruct which contains the annotation information for a given GlobalValue.
 
void AddGlobalAnnotations (const ValueDecl *D, llvm::GlobalValue *GV)
 Add global annotations that are set on D, for the global GV.
 
bool isInNoSanitizeList (SanitizerMask Kind, llvm::Function *Fn, SourceLocation Loc) const
 
bool isInNoSanitizeList (SanitizerMask Kind, 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.
 
ProfileList::ExclusionType isFunctionBlockedByProfileList (llvm::Function *Fn, SourceLocation Loc) const
 
ProfileList::ExclusionType isFunctionBlockedFromProfileInstr (llvm::Function *Fn, SourceLocation Loc) const
 
SanitizerMetadatagetSanitizerMetadata ()
 
void addDeferredVTable (const CXXRecordDecl *RD)
 
void EmitGlobal (GlobalDecl D)
 Emit code for a single global function or var decl.
 
bool TryEmitBaseDestructorAsAlias (const CXXDestructorDecl *D)
 Try to emit a base destructor as an alias to its primary base-class destructor.
 
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).
 
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.
 
void EmitOMPDeclareReduction (const OMPDeclareReductionDecl *D, CodeGenFunction *CGF=nullptr)
 Emit a code for declare reduction construct.
 
void EmitOMPDeclareMapper (const OMPDeclareMapperDecl *D, CodeGenFunction *CGF=nullptr)
 Emit a code for declare mapper construct.
 
void EmitOMPRequiresDecl (const OMPRequiresDecl *D)
 Emit a code for requires directive.
 
void EmitOMPAllocateDecl (const OMPAllocateDecl *D)
 Emit a code for the allocate directive.
 
std::optional< CharUnitsgetOMPAllocateAlignment (const VarDecl *VD)
 Return the alignment specified in an allocate directive, if present.
 
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.
 
bool AlwaysHasLTOVisibilityPublic (const CXXRecordDecl *RD)
 Returns whether the given record has public LTO visibility (regardless of -lto-whole-program-visibility) and therefore may not participate in (single-module) CFI and whole-program vtable optimization.
 
llvm::GlobalObject::VCallVisibility GetVCallVisibilityLevel (const CXXRecordDecl *RD, llvm::DenseSet< const CXXRecordDecl * > &Visited)
 Returns the vcall visibility of the given type.
 
void EmitVTableTypeMetadata (const CXXRecordDecl *RD, llvm::GlobalVariable *VTable, const VTableLayout &VTLayout)
 Emit type metadata for the given vtable using the given layout.
 
llvm::Type * getVTableComponentType () const
 
llvm::ConstantInt * CreateCrossDsoCfiTypeId (llvm::Metadata *MD)
 Generate a cross-DSO type identifier for MD.
 
llvm::ConstantInt * CreateKCFITypeId (QualType T)
 Generate a KCFI type identifier for T.
 
llvm::Metadata * CreateMetadataIdentifierForType (QualType T)
 Create a metadata identifier for the given type.
 
llvm::Metadata * CreateMetadataIdentifierForVirtualMemPtrType (QualType T)
 Create a metadata identifier that is intended to be used to check virtual calls via a member function pointer.
 
llvm::Metadata * CreateMetadataIdentifierGeneralized (QualType T)
 Create a metadata identifier for the generalization of the given type.
 
void CreateFunctionTypeMetadataForIcall (const FunctionDecl *FD, llvm::Function *F)
 Create and attach type metadata to the given function.
 
void setKCFIType (const FunctionDecl *FD, llvm::Function *F)
 Set type metadata to the given function.
 
void finalizeKCFITypes ()
 Emit KCFI type identifier constants and remove unused identifiers.
 
bool MayDropFunctionReturn (const ASTContext &Context, QualType ReturnType) const
 Whether this function's return type has no side effects, and thus may be trivially discarded if it is unused.
 
bool NeedAllVtablesTypeId () const
 Returns whether this module needs the "all-vtables" type identifier.
 
void AddVTableTypeMetadata (llvm::GlobalVariable *VTable, CharUnits Offset, const CXXRecordDecl *RD)
 Create and attach type metadata for the given vtable.
 
SmallVector< const CXXRecordDecl *, 0 > getMostBaseClasses (const CXXRecordDecl *RD)
 Return a vector of most-base classes for RD.
 
llvm::FunctionCallee getTerminateFn ()
 Get the declaration of std::terminate for the platform.
 
llvm::SanitizerStatReport & getSanStats ()
 
llvm::Value * createOpenCLIntToSamplerConversion (const Expr *E, CodeGenFunction &CGF)
 
void GenKernelArgMetadata (llvm::Function *FN, const FunctionDecl *FD=nullptr, CodeGenFunction *CGF=nullptr)
 OpenCL v1.2 s5.6.4.6 allows the compiler to store kernel argument information in the program executable.
 
llvm::Constant * getNullPointer (llvm::PointerType *T, QualType QT)
 Get target specific null pointer.
 
CharUnits getNaturalTypeAlignment (QualType T, LValueBaseInfo *BaseInfo=nullptr, TBAAAccessInfo *TBAAInfo=nullptr, bool forPointeeType=false)
 
CharUnits getNaturalPointeeTypeAlignment (QualType T, LValueBaseInfo *BaseInfo=nullptr, TBAAAccessInfo *TBAAInfo=nullptr)
 
bool stopAutoInit ()
 
void printPostfixForExternalizedDecl (llvm::raw_ostream &OS, const Decl *D) const
 Print the postfix for externalized static variable or kernels for single source offloading languages CUDA and HIP.
 
void moveLazyEmissionStates (CodeGenModule *NewBuilder)
 Move some lazily-emitted states to the NewBuilder.
 
void handleCUDALaunchBoundsAttr (llvm::Function *F, const CUDALaunchBoundsAttr *A, int32_t *MaxThreadsVal=nullptr, int32_t *MinBlocksVal=nullptr, int32_t *MaxClusterRankVal=nullptr)
 Emit the IR encoding to attach the CUDA launch bounds attribute to F.
 
void handleAMDGPUFlatWorkGroupSizeAttr (llvm::Function *F, const AMDGPUFlatWorkGroupSizeAttr *A, const ReqdWorkGroupSizeAttr *ReqdWGS=nullptr, int32_t *MinThreadsVal=nullptr, int32_t *MaxThreadsVal=nullptr)
 Emit the IR encoding to attach the AMD GPU flat-work-group-size attribute to F.
 
void handleAMDGPUWavesPerEUAttr (llvm::Function *F, const AMDGPUWavesPerEUAttr *A)
 Emit the IR encoding to attach the AMD GPU waves-per-eu attribute to F.
 
llvm::Constant * GetOrCreateLLVMGlobal (StringRef MangledName, llvm::Type *Ty, LangAS AddrSpace, const VarDecl *D, ForDefinition_t IsForDefinition=NotForDefinition)
 GetOrCreateLLVMGlobal - If the specified mangled name is not in the module, create and return an llvm GlobalVariable with the specified type and address space.
 
void AddGlobalCtor (llvm::Function *Ctor, int Priority=65535, unsigned LexOrder=~0U, llvm::Constant *AssociatedData=nullptr)
 AddGlobalCtor - Add a function to the list that will be called before main() runs.
 
void AddGlobalDtor (llvm::Function *Dtor, int Priority=65535, bool IsDtorAttrFunc=false)
 AddGlobalDtor - Add a function to the list that will be called when the module is unloaded.
 
Custom Blocks Runtime Interfaces
llvm::Constant * getNSConcreteGlobalBlock ()
 
llvm::Constant * getNSConcreteStackBlock ()
 
llvm::FunctionCallee getBlockObjectAssign ()
 
llvm::FunctionCallee 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::FunctionCallee IsOSVersionAtLeastFn = nullptr
 
llvm::FunctionCallee IsPlatformVersionAtLeastFn = nullptr
 
llvm::FoldingSet< BlockByrefHelpersByrefHelpersCache
 
int GlobalUniqueCount
 
- Public Attributes inherited from clang::CodeGen::CodeGenTypeCache
llvm::Type * VoidTy
 void
 
llvm::IntegerType * Int8Ty
 i8, i16, i32, and i64
 
llvm::IntegerType * Int16Ty
 
llvm::IntegerType * Int32Ty
 
llvm::IntegerType * Int64Ty
 
llvm::Type * HalfTy
 half, bfloat, float, double
 
llvm::Type * BFloatTy
 
llvm::Type * FloatTy
 
llvm::Type * DoubleTy
 
llvm::IntegerType * IntTy
 int
 
llvm::IntegerType * CharTy
 char
 
union {
   llvm::IntegerType *   IntPtrTy
 
   llvm::IntegerType *   SizeTy
 
   llvm::IntegerType *   PtrDiffTy
 
}; 
 intptr_t, size_t, and ptrdiff_t, which we assume are the same size.
 
union {
   llvm::PointerType *   UnqualPtrTy
 
   llvm::PointerType *   VoidPtrTy
 
   llvm::PointerType *   Int8PtrTy
 
   llvm::PointerType *   VoidPtrPtrTy
 
   llvm::PointerType *   Int8PtrPtrTy
 
}; 
 void*, void** in address space 0
 
union {
   llvm::PointerType *   AllocaVoidPtrTy
 
   llvm::PointerType *   AllocaInt8PtrTy
 
}; 
 void* in alloca address space
 
union {
   llvm::PointerType *   GlobalsVoidPtrTy
 
   llvm::PointerType *   GlobalsInt8PtrTy
 
}; 
 void* in default globals address space
 
llvm::PointerType * ConstGlobalsPtrTy
 void* in the address space for constant globals
 
union {
   unsigned char   IntSizeInBytes
 
   unsigned char   IntAlignInBytes
 
}; 
 The size and alignment of the builtin C type 'int'.
 
unsigned char PointerWidthInBits
 The width of a pointer into the generic address space.
 
union {
   unsigned char   PointerAlignInBytes
 
   unsigned char   PointerSizeInBytes
 
}; 
 The size and alignment of a pointer into the generic address space.
 
union {
   unsigned char   SizeSizeInBytes
 
   unsigned char   SizeAlignInBytes
 
}; 
 The size and alignment of size_t.
 
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 280 of file CodeGenModule.h.

Member Typedef Documentation

◆ CtorList

Definition at line 299 of file CodeGenModule.h.

Constructor & Destructor Documentation

◆ CodeGenModule()

CodeGenModule::CodeGenModule ( ASTContext C,
IntrusiveRefCntPtr< llvm::vfs::FileSystem >  FS,
const HeaderSearchOptions headersearchopts,
const PreprocessorOptions ppopts,
const CodeGenOptions CodeGenOpts,
llvm::Module &  M,
DiagnosticsEngine Diags,
CoverageSourceInfo CoverageInfo = nullptr 
)

Definition at line 330 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypeCache::AllocaInt8PtrTy, clang::CodeGen::CodeGenTypeCache::ASTAllocaAddressSpace, clang::CodeGen::CodeGenTypeCache::BFloatTy, clang::C, clang::CodeGen::CodeGenTypeCache::CharTy, clang::CodeGen::CodeGenTypeCache::ConstGlobalsPtrTy, clang::CodeGenOptions::CoverageDataFile, clang::CodeGenOptions::CoverageNotesFile, clang::Default, clang::CodeGen::CodeGenTypeCache::DoubleTy, clang::CodeGen::CodeGenTypeCache::FloatTy, clang::CodeGen::TargetCodeGenInfo::getABIInfo(), clang::CodeGen::TargetCodeGenInfo::getASTAllocaAddressSpace(), getCXXABI(), GetGlobalConstantAddressSpace(), clang::MangleContext::getKind(), getLangOpts(), clang::CodeGen::CGCXXABI::getMangleContext(), getModule(), getTargetCodeGenInfo(), getTypes(), clang::CodeGen::CodeGenTypeCache::GlobalsInt8PtrTy, clang::CodeGen::CodeGenTypeCache::HalfTy, clang::SanitizerSet::has(), clang::CodeGenOptions::hasProfileClangUse(), clang::CodeGen::CodeGenTypeCache::Int16Ty, clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::CodeGen::CodeGenTypeCache::Int64Ty, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::CodeGen::CodeGenTypeCache::IntAlignInBytes, clang::CodeGen::CodeGenTypeCache::IntPtrTy, clang::CodeGen::CodeGenTypeCache::IntTy, clang::LangOptions::MacroPrefixMap, clang::MangleContext::MK_Itanium, clang::CodeGen::CodeGenTypeCache::PointerAlignInBytes, clang::CodeGen::CodeGenTypeCache::PointerWidthInBits, clang::CodeGenOptions::ProfileInstrumentUsePath, clang::CodeGenOptions::ProfileRemappingFile, clang::CodeGen::CodeGenTypeCache::RuntimeCC, clang::LangOptions::Sanitize, clang::CodeGen::CodeGenTypeCache::SizeSizeInBytes, and clang::CodeGen::CodeGenTypeCache::VoidTy.

◆ ~CodeGenModule()

CodeGenModule::~CodeGenModule ( )

Definition at line 445 of file CodeGenModule.cpp.

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 2860 of file CodeGenModule.cpp.

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

◆ AddCXXDtorEntry()

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

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

Definition at line 1143 of file CodeGenModule.h.

◆ AddCXXPrioritizedStermFinalizerEntry()

void clang::CodeGen::CodeGenModule::AddCXXPrioritizedStermFinalizerEntry ( llvm::Function *  StermFinalizer,
int  Priority 
)
inline

Definition at line 1160 of file CodeGenModule.h.

References Priority.

◆ AddCXXStermFinalizerEntry()

void clang::CodeGen::CodeGenModule::AddCXXStermFinalizerEntry ( llvm::FunctionCallee  DtorFn)
inline

Add an sterm finalizer to the C++ global cleanup function.

Definition at line 1149 of file CodeGenModule.h.

◆ AddCXXStermFinalizerToGlobalDtor()

void clang::CodeGen::CodeGenModule::AddCXXStermFinalizerToGlobalDtor ( llvm::Function *  StermFinalizer,
int  Priority 
)
inline

Add an sterm finalizer to its own llvm.global_dtors entry.

Definition at line 1155 of file CodeGenModule.h.

References AddGlobalDtor(), and Priority.

◆ addDefaultFunctionDefinitionAttributes()

void CodeGenModule::addDefaultFunctionDefinitionAttributes ( llvm::AttrBuilder &  attrs)

Like the overload taking a Function &, but intended specifically for frontends that want to build on Clang's target-configuration logic.

Definition at line 2147 of file CGCall.cpp.

Referenced by clang::CodeGen::addDefaultFunctionDefinitionAttributes(), and clang::CodeGen::TargetCodeGenInfo::createEnqueuedBlockKernel().

◆ AddDeferredUnusedCoverageMapping()

void CodeGenModule::AddDeferredUnusedCoverageMapping ( Decl D)

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

Definition at line 6986 of file CodeGenModule.cpp.

References clang::Decl::getBeginLoc(), getContext(), clang::Decl::getKind(), clang::ASTContext::getSourceManager(), LimitedCoverage(), and SM.

Referenced by EmitTopLevelDecl().

◆ addDeferredVTable()

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

Definition at line 1378 of file CodeGenModule.h.

◆ AddDependentLib()

void CodeGenModule::AddDependentLib ( StringRef  Lib)

Appends a dependent lib to the appropriate metadata value.

Definition at line 2920 of file CodeGenModule.cpp.

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

Referenced by EmitTopLevelDecl().

◆ AddDetectMismatch()

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

Appends a detect mismatch command to the linker options.

Definition at line 2911 of file CodeGenModule.cpp.

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

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 3288 of file CodeGenModule.cpp.

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

Referenced by EmitGlobalAnnotations().

◆ AddGlobalCtor()

void CodeGenModule::AddGlobalCtor ( llvm::Function *  Ctor,
int  Priority = 65535,
unsigned  LexOrder = ~0U,
llvm::Constant *  AssociatedData = nullptr 
)

AddGlobalCtor - Add a function to the list that will be called before main() runs.

Definition at line 1985 of file CodeGenModule.cpp.

References Priority.

Referenced by Release().

◆ AddGlobalDtor()

void CodeGenModule::AddGlobalDtor ( llvm::Function *  Dtor,
int  Priority = 65535,
bool  IsDtorAttrFunc = false 
)

AddGlobalDtor - Add a function to the list that will be called when the module is unloaded.

Definition at line 1994 of file CodeGenModule.cpp.

References getContext(), getTriple(), and Priority.

Referenced by AddCXXStermFinalizerToGlobalDtor().

◆ addGlobalValReplacement()

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

Definition at line 534 of file CodeGenModule.cpp.

References clang::C.

◆ addReplacement()

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

Definition at line 499 of file CodeGenModule.cpp.

References clang::C.

Referenced by 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 2854 of file CodeGenModule.cpp.

Referenced by buildGlobalBlock(), and clang::CodeGen::CoverageMappingModuleGen::emit().

◆ addUsedOrCompilerUsedGlobal()

void CodeGenModule::addUsedOrCompilerUsedGlobal ( llvm::GlobalValue *  GV)

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

Definition at line 2866 of file CodeGenModule.cpp.

References getTriple().

Referenced by 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 7411 of file CodeGenModule.cpp.

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

Referenced by EmitVTableTypeMetadata().

◆ AdjustMemoryAttribute()

void CodeGenModule::AdjustMemoryAttribute ( StringRef  Name,
CGCalleeInfo  CalleeInfo,
llvm::AttributeList &  Attrs 
)

Adjust Memory attribute to ensure that the BE gets the right attribute.

Definition at line 2294 of file CGCall.cpp.

References getLLVMContext().

◆ AlwaysHasLTOVisibilityPublic()

bool CodeGenModule::AlwaysHasLTOVisibilityPublic ( const CXXRecordDecl RD)

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

Definition at line 1235 of file CGVTables.cpp.

References getCodeGenOpts(), clang::DeclContext::getParent(), clang::DeclContext::getRedeclContext(), and clang::Decl::hasAttr().

Referenced by HasHiddenLTOVisibility().

◆ AppendLinkerOptions()

void CodeGenModule::AppendLinkerOptions ( StringRef  Opts)

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

Definition at line 2906 of file CodeGenModule.cpp.

References getLLVMContext().

Referenced by EmitTopLevelDecl().

◆ clear()

void CodeGenModule::clear ( )

Definition at line 728 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 7010 of file CodeGenModule.cpp.

References ClearUnusedCoverageMapping().

Referenced by clang::CodeGen::CodeGenPGO::assignRegionCounters(), and ClearUnusedCoverageMapping().

◆ codegenCXXStructor()

llvm::Function * CodeGenModule::codegenCXXStructor ( GlobalDecl  GD)

◆ computeNonVirtualBaseClassOffset()

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

◆ ConstructAttributeList()

void CodeGenModule::ConstructAttributeList ( StringRef  Name,
const CGFunctionInfo FI,
CGCalleeInfo  CalleeInfo,
llvm::AttributeList &  AttrList,
unsigned CallingConv,
bool  AttrOnCallSite,
bool  IsThunk 
)

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

Construct the IR attribute list of a function or call.

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.

When adding an attribute, please consider where it should be handled:

  • getDefaultFunctionAttributes is for attributes that are essentially part of the global target configuration (but perhaps can be overridden on a per-function basis). Adding attributes there will cause them to also be set in frontends that build on Clang's target-configuration logic, as well as for code defined in library modules such as CUDA's libdevice.
  • ConstructAttributeList builds on top of getDefaultFunctionAttributes and adds declaration-specific, convention-specific, and frontend-specific logic. The last is of particular importance: attributes that restrict how the frontend generates code must be added here rather than getDefaultFunctionAttributes.

Definition at line 2322 of file CGCall.cpp.

References AddAttributesFromFunctionProtoType(), AddAttributesFromOMPAssumes(), addNoBuiltinAttributes(), clang::CodeGen::CGFunctionInfo::arg_begin(), clang::CodeGen::CGFunctionInfo::arg_end(), clang::CodeGen::CGFunctionInfo::arg_size(), canApplyNoFPClass(), clang::CanPassInRegs, clang::CanQual< T >::castAs(), clang::CodeGen::ABIArgInfo::CoerceAndExpand, DetermineNoUndef(), clang::CodeGen::ABIArgInfo::Direct, clang::CodeGen::ABIArgInfo::Expand, clang::CodeGen::ABIArgInfo::Extend, clang::FunctionType::ExtParameterInfo::getABI(), clang::CodeGen::CGFunctionInfo::getArgStruct(), clang::Type::getAs(), clang::CharUnits::getAsAlign(), clang::Type::getAsRecordDecl(), clang::Decl::getAttr(), clang::CodeGen::CGCalleeInfo::getCalleeDecl(), clang::CodeGen::CGCalleeInfo::getCalleeFunctionProtoType(), getCodeGenOpts(), getContext(), getDataLayout(), clang::GlobalDecl::getDecl(), clang::CodeGen::ABIArgInfo::getDirectAlign(), clang::CodeGen::CGFunctionInfo::getEffectiveCallingConvention(), clang::CodeGen::CGFunctionInfo::getExtParameterInfo(), clang::CodeGen::ABIArgInfo::getIndirectAlign(), clang::CodeGen::ABIArgInfo::getIndirectByVal(), clang::CodeGen::ABIArgInfo::getInReg(), clang::CodeGen::ABIArgInfo::getKind(), getLangOpts(), getLLVMContext(), getMinimumObjectSize(), getNaturalPointeeTypeAlignment(), getNaturalTypeAlignment(), getNoFPClassTestMask(), clang::CodeGen::ABIArgInfo::getPaddingInReg(), clang::Type::getPointeeType(), clang::PointerType::getPointeeType(), clang::CharUnits::getQuantity(), clang::CodeGen::CGFunctionInfo::getReturnInfo(), clang::CodeGen::CGFunctionInfo::getReturnType(), clang::ASTContext::getTypeInfoInChars(), clang::CanQual< T >::getTypePtr(), getTypes(), clang::Decl::hasAttr(), HasStrictReturn(), clang::CodeGen::ABIArgInfo::Ignore, clang::CodeGen::ABIArgInfo::InAlloca, clang::CodeGen::ABIArgInfo::Indirect, clang::CodeGen::ABIArgInfo::IndirectAliased, clang::CodeGen::CGFunctionInfo::isChainCall(), clang::CodeGen::CGFunctionInfo::isCmseNSCall(), clang::Type::isConstantSizeType(), clang::Type::isIncompleteType(), clang::CodeGen::CGFunctionInfo::isInstanceMethod(), clang::FunctionType::ExtParameterInfo::isNoEscape(), clang::CodeGen::CGFunctionInfo::isNoReturn(), clang::Type::isObjectType(), clang::Type::isPointerType(), clang::CodeGen::ABIArgInfo::isSignExt(), clang::CXXMethodDecl::isVirtual(), clang::Type::isVoidType(), clang::CharUnits::isZero(), clang::Ordinary, clang::SwiftAsyncContext, clang::SwiftContext, clang::SwiftErrorResult, clang::SwiftIndirectResult, and clang::CodeGen::CGFunctionInfoArgInfo::type.

Referenced by SetLLVMFunctionAttributes().

◆ CreateCrossDsoCfiTypeId()

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

Generate a cross-DSO type identifier for MD.

Definition at line 2056 of file CodeGenModule.cpp.

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

Referenced by AddVTableTypeMetadata(), and CreateFunctionTypeMetadataForIcall().

◆ CreateFunctionTypeMetadataForIcall()

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

◆ CreateGlobalInitOrCleanUpFunction()

llvm::Function * CodeGenModule::CreateGlobalInitOrCleanUpFunction ( llvm::FunctionType *  ty,
const Twine &  name,
const CGFunctionInfo FI,
SourceLocation  Loc = SourceLocation(),
bool  TLS = false,
llvm::GlobalVariable::LinkageTypes  Linkage = llvm::GlobalVariable::InternalLinkage 
)

◆ CreateKCFITypeId()

llvm::ConstantInt * CodeGenModule::CreateKCFITypeId ( QualType  T)

◆ 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 7351 of file CodeGenModule.cpp.

Referenced by AddVTableTypeMetadata(), CreateFunctionTypeMetadataForIcall(), 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 7356 of file CodeGenModule.cpp.

Referenced by EmitVTableTypeMetadata().

◆ 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 7392 of file CodeGenModule.cpp.

References GeneralizeFunctionType(), and getContext().

Referenced by CreateFunctionTypeMetadataForIcall().

◆ createOpenCLIntToSamplerConversion()

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

◆ CreateOrReplaceCXXRuntimeVariable()

llvm::GlobalVariable * CodeGenModule::CreateOrReplaceCXXRuntimeVariable ( StringRef  Name,
llvm::Type *  Ty,
llvm::GlobalValue::LinkageTypes  Linkage,
llvm::Align  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 4969 of file CodeGenModule.cpp.

References getModule(), and supportsCOMDAT().

Referenced by clang::CodeGen::CodeGenVTables::GenerateConstructionVTable(), and clang::CodeGen::CodeGenVTables::GetAddrOfVTT().

◆ CreateRuntimeFunction()

llvm::FunctionCallee CodeGenModule::CreateRuntimeFunction ( llvm::FunctionType *  Ty,
StringRef  Name,
llvm::AttributeList  ExtraAttrs = llvm::AttributeList(),
bool  Local = false,
bool  AssumeConvergent = false 
)

◆ 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 5032 of file CodeGenModule.cpp.

References clang::Default, getContext(), clang::ASTContext::getLangOpts(), GetOrCreateLLVMGlobal(), clang::opencl_global, and setDSOLocal().

Referenced by emitGlobalDtorWithCXAAtExit(), GetAddrOfConstantCFString(), and getTlsGuardVar().

◆ createUnnamedGlobalFrom()

Address CodeGenModule::createUnnamedGlobalFrom ( const VarDecl D,
llvm::Constant *  Constant,
CharUnits  Align 
)

◆ DecorateInstructionWithInvariantGroup()

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

Adds !invariant.barrier !tag to instruction.

Definition at line 1472 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 1466 of file CodeGenModule.cpp.

References getTBAAAccessTagInfo().

◆ 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 3263 of file CodeGenModule.cpp.

References EmitAnnotationArgs(), EmitAnnotationLineNo(), EmitAnnotationString(), EmitAnnotationUnit(), and getDataLayout().

Referenced by AddGlobalAnnotations().

◆ EmitAnnotationArgs()

llvm::Constant * CodeGenModule::EmitAnnotationArgs ( const AnnotateAttr *  Attr)

◆ EmitAnnotationLineNo()

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

◆ EmitAnnotationString()

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

Emit an annotation string.

Definition at line 3198 of file CodeGenModule.cpp.

References AnnotationSection, clang::CodeGen::CodeGenTypeCache::ConstGlobalsPtrTy, getLLVMContext(), getModule(), and s.

Referenced by EmitAnnotateAttr(), and EmitAnnotationUnit().

◆ EmitAnnotationUnit()

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

◆ EmitDeferredUnusedCoverageMappings()

void CodeGenModule::EmitDeferredUnusedCoverageMappings ( )

Emit all the deferred coverage mappings for the uninstrumented functions.

Definition at line 7021 of file CodeGenModule.cpp.

References clang::Ctor_Base, clang::Dtor_Base, clang::CodeGen::CodeGenPGO::emitEmptyCounterMapping(), 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 1247 of file CGExpr.cpp.

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

Referenced by EmitPointerWithAlignment().

◆ EmitExternalDeclaration()

void CodeGenModule::EmitExternalDeclaration ( const VarDecl D)

Definition at line 5064 of file CodeGenModule.cpp.

◆ EmitGlobal()

void CodeGenModule::EmitGlobal ( GlobalDecl  D)

◆ EmitGlobalAnnotations()

void CodeGenModule::EmitGlobalAnnotations ( )

Emit all the global annotations.

Definition at line 3178 of file CodeGenModule.cpp.

References AddGlobalAnnotations(), AnnotationSection, GetGlobalValue(), and getModule().

Referenced by Release().

◆ EmitMainVoidAlias()

void CodeGenModule::EmitMainVoidAlias ( )

Emit an alias for "main" if it has no arguments (needed for wasm).

Definition at line 7061 of file CodeGenModule.cpp.

References clang::TargetInfo::getIntWidth(), getModule(), and clang::ASTContext::getTargetInfo().

Referenced by Release().

◆ EmitNullConstant()

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

◆ 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 2400 of file CGExprConstant.cpp.

Referenced by EmitNullBaseClassInitialization().

◆ EmitOMPAllocateDecl()

void CodeGenModule::EmitOMPAllocateDecl ( const OMPAllocateDecl D)

◆ EmitOMPDeclareMapper()

void CodeGenModule::EmitOMPDeclareMapper ( const OMPDeclareMapperDecl D,
CodeGenFunction CGF = nullptr 
)

Emit a code for declare mapper construct.

Definition at line 2710 of file CGDecl.cpp.

References clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), getOpenMPRuntime(), and clang::Decl::isUsed().

Referenced by EmitGlobal(), and EmitTopLevelDecl().

◆ EmitOMPDeclareReduction()

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

Emit a code for declare reduction construct.

Definition at line 2703 of file CGDecl.cpp.

References clang::CodeGen::CGOpenMPRuntime::emitUserDefinedReduction(), getOpenMPRuntime(), and clang::Decl::isUsed().

Referenced by EmitGlobal(), and EmitTopLevelDecl().

◆ EmitOMPRequiresDecl()

void CodeGenModule::EmitOMPRequiresDecl ( const OMPRequiresDecl D)

Emit a code for requires directive.

Parameters
DRequires declaration

Definition at line 2718 of file CGDecl.cpp.

References getOpenMPRuntime(), and clang::CodeGen::CGOpenMPRuntime::processRequiresDirective().

Referenced by EmitTopLevelDecl().

◆ EmitOMPThreadPrivateDecl()

void CodeGenModule::EmitOMPThreadPrivateDecl ( const OMPThreadPrivateDecl D)

Emit a code for threadprivate directive.

Parameters
DThreadprivate declaration.

Definition at line 7299 of file CodeGenModule.cpp.

References GetAddrOfGlobalVar(), getContext(), getOpenMPRuntime(), clang::ValueDecl::getType(), getTypes(), and clang::OMPThreadPrivateDecl::varlists().

Referenced by EmitTopLevelDecl().

◆ EmitTentativeDefinition()

void CodeGenModule::EmitTentativeDefinition ( const VarDecl D)

Definition at line 5041 of file CodeGenModule.cpp.

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

◆ EmitTopLevelDecl()

void CodeGenModule::EmitTopLevelDecl ( Decl D)

◆ 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 1138 of file CGVTables.cpp.

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

◆ EmitVTableTypeMetadata()

void CodeGenModule::EmitVTableTypeMetadata ( const CXXRecordDecl RD,
llvm::GlobalVariable *  VTable,
const VTableLayout VTLayout 
)

◆ Error()

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

◆ ErrorUnsupported() [1/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 1495 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.

◆ ErrorUnsupported() [2/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 1485 of file CodeGenModule.cpp.

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

Referenced by AddVariableConstraints(), and GetAddrOfTemplateParamObject().

◆ finalizeKCFITypes()

void CodeGenModule::finalizeKCFITypes ( )

Emit KCFI type identifier constants and remove unused identifiers.

Definition at line 2714 of file CodeGenModule.cpp.

References allowKCFIIdentifier(), clang::Asm, getModule(), and clang::CodeGen::Type.

Referenced by Release().

◆ GenKernelArgMetadata()

void CodeGenModule::GenKernelArgMetadata ( llvm::Function *  FN,
const FunctionDecl FD = nullptr,
CodeGenFunction CGF = nullptr 
)

OpenCL v1.2 s5.6.4.6 allows the compiler to store kernel argument information in the program executable.

The argument information stored includes the argument name, its type, the address and access qualifiers used. This helper can be used to generate metadata for source code kernel function as well as generated implicitly kernels. If a kernel is generated implicitly null value has to be passed to the last two parameters, otherwise all parameters must have valid non-null values.

Parameters
FNis a pointer to IR function being generated.
FDis a pointer to function declaration if any.
CGFis a pointer to CodeGenFunction that generates this function.

Definition at line 2137 of file CodeGenModule.cpp.

References ArgInfoAddressSpace(), clang::CodeGen::CodeGenFunction::Builder, clang::Type::castAs(), clang::QualType::getAddressSpace(), clang::Type::getAs(), clang::Decl::getAttr(), clang::QualType::getCanonicalType(), getCodeGenOpts(), getLangOpts(), clang::NamedDecl::getName(), clang::FunctionDecl::getNumParams(), clang::FunctionDecl::getParamDecl(), clang::Type::getPointeeType(), clang::ASTContext::getPrintingPolicy(), clang::ValueDecl::getType(), clang::QualType::isConstQualified(), clang::Type::isImageType(), clang::Type::isPipeType(), clang::Type::isPointerType(), clang::QualType::isRestrictQualified(), clang::QualType::isVolatileQualified(), clang::OpenCL, clang::opencl_constant, clang::opencl_global, and removeImageAccessQualifier().

◆ getAddrAndTypeOfCXXStructor()

llvm::FunctionCallee CodeGenModule::getAddrAndTypeOfCXXStructor ( GlobalDecl  GD,
const CGFunctionInfo FnInfo = nullptr,
llvm::FunctionType *  FnType = nullptr,
bool  DontDefer = false,
ForDefinition_t  IsForDefinition = NotForDefinition 
)

◆ GetAddrOfConstantCFString()

ConstantAddress CodeGenModule::GetAddrOfConstantCFString ( const StringLiteral Literal)

◆ 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 2240 of file CGExprConstant.cpp.

References clang::CompoundLiteralExpr::isFileScope().

◆ 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 2227 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
GlobalNameIf provided, the name to use for the global (if one is created).

The result has pointer to array type.

Definition at line 6365 of file CodeGenModule.cpp.

References clang::C, castStringLiteralToDefaultAddressSpace(), clang::CodeGen::CodeGenTypeCache::CharTy, GenerateStringLiteral(), clang::ASTContext::getAlignOfGlobalVarInChars(), clang::CharUnits::getAsAlign(), getContext(), getLLVMContext(), and clang::CharUnits::getQuantity().

Referenced by buildBlockDescriptor(), and GetAddrOfConstantStringFromObjCEncode().

◆ GetAddrOfConstantStringFromLiteral()

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

◆ 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 6355 of file CodeGenModule.cpp.

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

◆ getAddrOfCXXStructor()

llvm::Constant * clang::CodeGen::CodeGenModule::getAddrOfCXXStructor ( GlobalDecl  GD,
const CGFunctionInfo FnInfo = nullptr,
llvm::FunctionType *  FnType = nullptr,
bool  DontDefer = false,
ForDefinition_t  IsForDefinition = NotForDefinition 
)
inline

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

Definition at line 1083 of file CodeGenModule.h.

References getAddrAndTypeOfCXXStructor().

Referenced by codegenCXXStructor(), and GetAddrOfGlobal().

◆ 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 4613 of file CodeGenModule.cpp.

References clang::CodeGen::CodeGenTypes::ConvertType(), clang::Dtor_Base, clang::Dtor_Complete, getCUDARuntime(), getCXXABI(), clang::GlobalDecl::getDecl(), clang::GlobalDecl::getDtorType(), clang::CodeGen::CGCUDARuntime::getKernelHandle(), getMangledName(), getTarget(), clang::ValueDecl::getType(), and getTypes().

Referenced by EmitFunctionDeclPointer(), EmitNewDeleteCall(), GetAddrOfGlobal(), and GetFunctionStart().

◆ GetAddrOfGlobal()

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

◆ GetAddrOfGlobalBlock()

llvm::Constant * CodeGenModule::GetAddrOfGlobalBlock ( const BlockExpr BE,
StringRef  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 1021 of file CodeGenModule.h.

Referenced by buildGlobalBlock(), and GetAddrOfGlobalBlock().

◆ GetAddrOfGlobalTemporary()

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

◆ 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 5016 of file CodeGenModule.cpp.

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

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

◆ GetAddrOfMSGuidDecl()

ConstantAddress CodeGenModule::GetAddrOfMSGuidDecl ( const MSGuidDecl GD)

◆ GetAddrOfRTTIDescriptor()

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

◆ GetAddrOfTemplateParamObject()

ConstantAddress CodeGenModule::GetAddrOfTemplateParamObject ( const TemplateParamObjectDecl TPO)

◆ 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 35 of file CGVTables.cpp.

◆ GetAddrOfUnnamedGlobalConstantDecl()

ConstantAddress CodeGenModule::GetAddrOfUnnamedGlobalConstantDecl ( const UnnamedGlobalConstantDecl GCD)

◆ getAtomicGetterHelperFnMap()

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

Definition at line 715 of file CodeGenModule.h.

◆ getAtomicSetterHelperFnMap()

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

Definition at line 707 of file CodeGenModule.h.

◆ getBlockDescriptorType()

llvm::Type * CodeGenModule::getBlockDescriptorType ( )

◆ getBlockMangledName()

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

◆ getBlockObjectAssign()

llvm::FunctionCallee CodeGenModule::getBlockObjectAssign ( )

◆ getBlockObjectDispose()

llvm::FunctionCallee CodeGenModule::getBlockObjectDispose ( )

◆ 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 96 of file CGBuiltin.cpp.

References clang::ASTContext::BuiltinInfo, getMangledName(), clang::Builtin::Context::getName(), getTarget(), getTriple(), clang::ValueDecl::getType(), getTypes(), clang::Decl::hasAttr(), and clang::Builtin::Context::isLibFunction().

◆ getClassPointerAlignment()

CharUnits CodeGenModule::getClassPointerAlignment ( const CXXRecordDecl CD)

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 40 of file CGClass.cpp.

References clang::ASTRecordLayout::getAlignment(), clang::ASTContext::getASTRecordLayout(), getContext(), clang::CXXRecordDecl::hasDefinition(), clang::CXXRecordDecl::isEffectivelyFinal(), and clang::CharUnits::One().

Referenced by getNaturalTypeAlignment(), InitCatchParam(), and PerformReturnAdjustment().

◆ getCodeGenOpts()

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

Definition at line 748 of file CodeGenModule.h.

Referenced by clang::CodeGen::CoverageMappingModuleGen::addFunctionMappingRecord(), clang::CodeGen::CGDebugInfo::addHeapAllocSiteMetadata(), clang::CodeGen::TargetCodeGenInfo::addStackProbeTargetAttributes(), AlwaysHasLTOVisibilityPublic(), clang::CodeGen::CodeGenPGO::assignRegionCounters(), clang::CodeGen::CodeGenFunction::checkIfFunctionMustProgress(), clang::CodeGen::CodeGenFunction::checkIfLoopMustProgress(), ConstructAttributeList(), clang::CodeGen::CGCXXABI::constructorsAndDestructorsReturnThis(), CreateKCFITypeId(), clang::CodeGen::createPPC32TargetCodeGenInfo(), createReferenceTemporary(), CreateRuntimeFunction(), createTargetCodeGenInfo(), clang::CodeGen::createWinX86_32TargetCodeGenInfo(), clang::CodeGen::createX86_32TargetCodeGenInfo(), clang::CodeGen::CGDebugInfo::EmitAndRetainType(), emitAutoreleasedReturnValueMarker(), emitCheckHandlerCall(), clang::CodeGen::CGDebugInfo::EmitDeclareOfArgVariable(), clang::CodeGen::CGDebugInfo::EmitDeclareOfAutoVariable(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(), EmitDeclDestroy(), clang::CodeGen::CGDebugInfo::EmitExplicitCastType(), clang::CodeGen::CGDebugInfo::EmitExternalVariable(), clang::CodeGen::CGDebugInfo::EmitGlobalAlias(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), clang::CodeGen::CGDebugInfo::EmitImportDecl(), clang::CodeGen::CGDebugInfo::EmitLabel(), clang::CodeGen::CGDebugInfo::EmitNamespaceAlias(), EmitObjectDelete(), emitOffloadingArrays(), emitOptimizedARCReturnCall(), emitOutlinedFunctionPrologue(), emitTargetCallKernelLaunch(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataCalls(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataStandAloneCall(), EmitTopLevelDecl(), clang::CodeGen::CGOpenMPRuntime::emitUpdateLocation(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CGDebugInfo::EmitUsingDecl(), clang::CodeGen::CGDebugInfo::EmitUsingDirective(), clang::CodeGen::CGDebugInfo::EmitUsingEnumDecl(), EmitVTableTypeMetadata(), emitWritebackArg(), clang::CodeGen::CGDebugInfo::finalize(), clang::CodeGen::CGHLSLRuntime::finishCodeGen(), GenKernelArgMetadata(), GetAddrOfConstantStringFromLiteral(), clang::CodeGen::CodeGenFunction::getARCCleanupKind(), getBlockDescriptorName(), clang::CodeGen::CodeGenTypes::getCodeGenOpts(), getCodegenToUse(), getCopyDestroyHelperFuncName(), getMangledNameImpl(), clang::CodeGen::CGDebugInfo::getOrCreateRecordType(), clang::CodeGen::CGDebugInfo::getOrCreateStandaloneType(), clang::CodeGen::CodeGenFunction::incrementProfileCounter(), isFunctionBlockedByProfileList(), isFunctionBlockedFromProfileInstr(), clang::CodeGen::CodeGenFunction::isMCDCCoverageEnabled(), clang::CodeGen::CodeGenFunction::needsEHCleanup(), needsTypeIdentifier(), Release(), clang::CodeGen::CGDebugInfo::remapDIPath(), requiresMemberFunctionPointerTypeMetadata(), clang::CodeGen::CodeGenPGO::setProfileVersion(), clang::CodeGen::CodeGenPGO::setValueProfilingFlag(), shouldAssumeDSOLocal(), shouldEmitAvailableExternallyVTable(), shouldEmitVTableThunk(), shouldSplitConstantStore(), clang::CodeGen::CodeGenFunction::shouldUseFusedARCCalls(), TryEmitBaseDestructorAsAlias(), TypeRequiresBuiltinLaunder(), and clang::CodeGen::CodeGenPGO::valueProfile().

◆ GetConstantArrayFromStringLiteral()

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

◆ getContext()

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

Definition at line 739 of file CodeGenModule.h.

Referenced by AddDeferredUnusedCoverageMapping(), AddGlobalDtor(), clang::CodeGen::CGDebugInfo::AddStringLiteralDebugInfo(), clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), clang::CodeGen::CGHLSLRuntime::annotateHLSLResource(), clang::CodeGen::CodeGenTypes::arrangeCXXConstructorCall(), clang::CodeGen::CodeGenTypes::arrangeCXXStructorDeclaration(), clang::CodeGen::CodeGenPGO::assignRegionCounters(), buildBlockDescriptor(), buildByrefHelpers(), buildGlobalBlock(), clang::CodeGen::CGCXXABI::buildThisParam(), castStringLiteralToDefaultAddressSpace(), classifyType(), clang::CodeGen::CGDebugInfo::completeClass(), clang::CodeGen::CGDebugInfo::completeRequiredType(), clang::CodeGen::CGDebugInfo::completeType(), clang::CodeGen::CGDebugInfo::completeUnusedClass(), clang::CodeGen::CGObjCRuntime::ComputeBitfieldBitOffset(), computeBlockInfo(), clang::CodeGen::CGObjCRuntime::ComputeIvarBaseOffset(), computeNonVirtualBaseClassOffset(), configureBlocksRuntimeObject(), ConstructAttributeList(), clang::CodeGen::CGCXXABI::ConvertMemberPointerType(), createCXXABI(), clang::CodeGen::CreateItaniumCXXABI(), CreateKCFITypeId(), createKmpTaskTRecordDecl(), createKmpTaskTWithPrivatesRecordDecl(), CreateMetadataIdentifierGeneralized(), clang::CodeGen::CGOpenMPRuntime::createOffloadEntriesAndInfoMetadata(), createPrivatesRecordDecl(), CreateRuntimeVariable(), createUnnamedGlobalFrom(), EmitAnnotationLineNo(), EmitAnnotationUnit(), emitCombinerOrInitializer(), emitCopyprivateCopyFunction(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(), clang::CodeGen::CGOpenMPRuntime::emitDeclareSimdFunction(), EmitDeclDestroy(), clang::CodeGen::CGOpenMPRuntime::emitDependClause(), emitDependData(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDestroyClause(), emitDestructorsFunction(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), EmitDoacrossOrdered(), clang::CodeGen::CodeGenPGO::emitEmptyCounterMapping(), clang::CodeGen::CGDebugInfo::EmitExternalVariable(), clang::CodeGen::ConstantEmitter::emitForMemory(), EmitGlobal(), EmitGlobalNamedRegister(), emitGlobalToListCopyFunction(), emitGlobalToListReduceFunction(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), emitInterWarpCopyFunction(), clang::CodeGen::CGOpenMPRuntime::emitKmpRoutineEntryT(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), emitListToGlobalCopyFunction(), emitListToGlobalReduceFunction(), clang::CodeGen::CGCXXABI::EmitMemberFunctionPointer(), EmitNullConstant(), EmitOMPAllocateDecl(), EmitOMPThreadPrivateDecl(), emitOutlinedFunctionPrologue(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), clang::CodeGen::CGOpenMPRuntime::emitReductionFunction(), emitRestoreIP(), emitShuffleAndReduceFunction(), clang::CodeGen::CGOpenMPRuntime::emitSingleRegion(), clang::CodeGen::CGOpenMPRuntime::emitTargetNumIterationsCall(), emitTaskDupFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionFixups(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit(), clang::CodeGen::CGOpenMPRuntimeGPU::emitTeamsOutlinedFunction(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), EmitTopLevelDecl(), clang::CodeGen::CGOpenMPRuntime::emitUpdateClause(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), clang::CodeGen::CodeGenVTables::EmitVTTDefinition(), extractFieldType(), clang::CodeGen::swiftcall::SwiftAggLowering::finish(), clang::CodeGen::CodeGenVTables::GenerateConstructionVTable(), GenerateStringLiteral(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntimeGPU::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntime::getAddrOfArtificialThreadPrivate(), GetAddrOfConstantCFString(), GetAddrOfConstantCString(), GetAddrOfConstantStringFromLiteral(), GetAddrOfConstantStringFromObjCEncode(), clang::CodeGen::CGOpenMPRuntime::getAddrOfDeclareTargetVar(), GetAddrOfGlobalTemporary(), clang::CodeGen::CGOpenMPRuntime::getAddrOfThreadPrivate(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddrOfThreadPrivate(), GetAddrOfUnnamedGlobalConstantDecl(), clang::CodeGen::CodeGenVTables::GetAddrOfVTT(), getAsmSrcLocInfo(), getBlockCaptureStr(), getBlockDescriptorName(), getBlockDescriptorType(), getClangCallTerminateFn(), getClassPointerAlignment(), clang::CodeGen::CGCXXABI::getContext(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::ConstantEmitter::getCurrentAddrPrivate(), clang::CodeGen::CGOpenMPRuntime::getDepobjElements(), getDynamicOffsetAlignment(), getEntryInfoFromPresumedLoc(), getFunctionLinkage(), clang::CodeGen::CGDebugInfo::getFunctionType(), clang::CodeGen::CGOpenCLRuntime::getGenericVoidPointerType(), getGuardAcquireFn(), getInstrProfSection(), clang::CodeGen::CGOpenMPRuntimeGPU::getKmpcAllocShared(), getLLVMLinkageVarDefinition(), getMangledName(), getMangledNameImpl(), clang::CodeGen::swiftcall::getMaximumVoluntaryIntegerSize(), getMemberPointerConstant(), getMinimumClassObjectSize(), getMinimumObjectSize(), getNaturalTypeAlignment(), getNonMemoryType(), clang::CodeGen::getNonTrivialCStructCopyAssignmentOperator(), clang::CodeGen::getNonTrivialCStructCopyConstructor(), clang::CodeGen::getNonTrivialCStructDefaultConstructor(), clang::CodeGen::getNonTrivialCStructDestructor(), clang::CodeGen::getNonTrivialCStructMoveAssignmentOperator(), clang::CodeGen::getNonTrivialCStructMoveConstructor(), GetNonVirtualBaseClassOffset(), getOMPAllocateAlignment(), GetOrCreateLLVMGlobal(), getOrCreateStaticVarDecl(), clang::CodeGen::CGOpenMPRuntime::getOrCreateThreadPrivateCache(), clang::CodeGen::CGOpenCLRuntime::getPipeElemAlign(), clang::CodeGen::CGOpenCLRuntime::getPipeElemSize(), clang::CodeGen::CGOpenCLRuntime::getPointerType(), clang::CodeGen::CGOpenCLRuntime::getSamplerType(), clang::CodeGen::CodeGenVTables::getSecondaryVirtualPointerIndex(), clang::CodeGen::CodeGenVTables::getSubVTTIndex(), getTypeInfoLinkage(), getVBaseAlignment(), GetWeakRefReference(), handleAMDGPUFlatWorkGroupSizeAttr(), handleAMDGPUWavesPerEUAttr(), handleCUDALaunchBoundsAttr(), imbueXRayAttrs(), InitCatchParam(), InitDeviceMC(), clang::CodeGen::initializationPatternFor(), isFunctionBlockedByProfileList(), isInNoSanitizeList(), clang::CodeGen::swiftcall::isLegalIntegerType(), clang::CodeGen::CodeGenVTables::isVTableExternal(), printPostfixForExternalizedDecl(), clang::CodeGen::CGOpenMPRuntime::registerTargetGlobalVariable(), Release(), SetLLVMFunctionAttributesForDefinition(), clang::CodeGen::CGDebugInfo::setLocation(), setUsedBits(), shouldBeInCOMDAT(), ShouldUseExternalRTTIDescriptor(), stopAutoInit(), clang::CodeGen::CGOpenMPRuntimeGPU::translateParameter(), clang::CodeGen::ConstantEmitter::tryEmitConstantExpr(), clang::CodeGen::ConstantEmitter::tryEmitPrivate(), clang::CodeGen::ConstantEmitter::tryEmitPrivateForVarInit(), and TypeRequiresBuiltinLaunder().

◆ getCoverageMapping()

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

◆ getCUDARuntime()

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

Return a reference to the configured CUDA runtime.

Definition at line 652 of file CodeGenModule.h.

Referenced by EmitDirectCallee(), GetAddrOfFunction(), getMangledName(), and GetOrCreateLLVMGlobal().

◆ getCXXABI()

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

Definition at line 759 of file CodeGenModule.h.

Referenced by BuildAppleKextVirtualCall(), CalculateCookiePadding(), CodeGenModule(), commonEmitCXXMemberOrOperatorCall(), CreateKCFITypeId(), EmitArrayDelete(), EmitCompare(), EmitDeclDestroy(), EmitDestroyingObjectDelete(), EmitDynamicCastToNull(), EmitGlobalVarDeclLValue(), EmitMemberInitializer(), EmitNullBaseClassInitialization(), EmitNullConstant(), EmitObjectDelete(), EmitTopLevelDecl(), EmitTypeidFromVTable(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), EmitVTableTypeMetadata(), clang::CodeGen::CodeGenVTables::GenerateClassData(), clang::CodeGen::CodeGenVTables::GenerateConstructionVTable(), getAddrAndTypeOfCXXStructor(), GetAddrOfConstantStringFromLiteral(), GetAddrOfFunction(), GetAddrOfGlobalTemporary(), GetAddrOfRTTIDescriptor(), clang::CodeGen::CodeGenVTables::GetAddrOfVTT(), GetAddrOfVTTVTable(), getBlockCaptureStr(), getBlockMangledName(), clang::CodeGen::getCXXDestructorImplicitParam(), getFunctionLinkage(), clang::CodeGen::getImplicitCXXConstructorArgs(), getMangledName(), getMangledNameImpl(), getMemberPointerConstant(), clang::CodeGen::CGObjCRuntime::getSymbolNameForMethod(), getTerminateFn(), getTypeIdentifier(), getVTableLinkage(), hasInAllocaArgs(), PerformReturnAdjustment(), clang::CodeGen::CGCallee::prepareConcreteCallee(), pushTemporaryCleanup(), setDLLImportDLLExport(), SetLLVMFunctionAttributesForDefinition(), setThunkProperties(), shouldEmitAvailableExternallyVTable(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

◆ getDataLayout()

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

◆ GetDefaultLLVMTLSModel()

llvm::GlobalVariable::ThreadLocalMode CodeGenModule::GetDefaultLLVMTLSModel ( ) const

◆ getDiags()

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

◆ 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 91 of file CGClass.cpp.

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

Referenced by getVBaseAlignment().

◆ getExpressionLocationsEnabled()

bool CodeGenModule::getExpressionLocationsEnabled ( ) const

Return true if we should emit location information for expressions.

Definition at line 6200 of file CodeGenModule.cpp.

◆ getFileSystem()

const IntrusiveRefCntPtr< llvm::vfs::FileSystem > & clang::CodeGen::CodeGenModule::getFileSystem ( ) const
inline

Definition at line 741 of file CodeGenModule.h.

◆ getFunctionLinkage()

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

◆ GetFunctionStart()

llvm::Constant * CodeGenModule::GetFunctionStart ( const ValueDecl Decl)

Definition at line 4648 of file CodeGenModule.cpp.

References GetAddrOfFunction().

◆ getGenericBlockLiteralType()

llvm::Type * CodeGenModule::getGenericBlockLiteralType ( )

◆ GetGlobalConstantAddressSpace()

LangAS CodeGenModule::GetGlobalConstantAddressSpace ( ) const

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

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

Definition at line 5111 of file CodeGenModule.cpp.

References clang::cuda_device, clang::Default, getTarget(), getTriple(), clang::opencl_constant, and clang::sycl_global.

Referenced by castStringLiteralToDefaultAddressSpace(), CodeGenModule(), createReferenceTemporary(), createUnnamedGlobalFrom(), and GenerateStringLiteral().

◆ getGlobalCtors()

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

Definition at line 782 of file CodeGenModule.h.

◆ getGlobalDtors()

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

Definition at line 783 of file CodeGenModule.h.

◆ GetGlobalValue()

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

◆ 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 5073 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, clang::opencl_global_device, clang::opencl_global_host, clang::opencl_local, and clang::sycl_global.

Referenced by emitCatchDispatchBlock(), EmitOMPAllocateDecl(), GetAddrOfGlobalTemporary(), GetOrCreateLLVMGlobal(), and getOrCreateStaticVarDecl().

◆ getHeaderSearchOpts()

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

Definition at line 744 of file CodeGenModule.h.

◆ getHLSLRuntime()

CGHLSLRuntime & clang::CodeGen::CodeGenModule::getHLSLRuntime ( )
inline

Return a reference to the configured HLSL runtime.

Definition at line 658 of file CodeGenModule.h.

Referenced by EmitTopLevelDecl(), and Release().

◆ getIntrinsic()

llvm::Function * CodeGenModule::getIntrinsic ( unsigned  IID,
ArrayRef< llvm::Type * >  Tys = std::nullopt 
)

◆ getItaniumVTableContext() [1/2]

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

◆ getItaniumVTableContext() [2/2]

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

◆ getLangOpts()

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

Definition at line 740 of file CodeGenModule.h.

Referenced by addBlockLayout(), addMonoNonMonoModifier(), clang::CodeGen::CodeGenPGO::assignRegionCounters(), buildBlockDescriptor(), buildGlobalBlock(), CallBeginCatch(), castStringLiteralToDefaultAddressSpace(), clang::CodeGen::CGOpenMPRuntime::CGOpenMPRuntime(), clang::CodeGen::CGOpenMPRuntimeGPU::CGOpenMPRuntimeGPU(), CodeGenModule(), clang::CodeGen::CGDebugInfo::completeRequiredType(), clang::CodeGen::CGDebugInfo::completeType(), computeBlockInfo(), configureBlocksRuntimeObject(), ConstructAttributeList(), CreateGlobalInitOrCleanUpFunction(), clang::CodeGen::CreateGNUObjCRuntime(), clang::CodeGen::CGOpenMPRuntime::createOffloadEntriesAndInfoMetadata(), clang::CodeGen::CGOpenMPRuntime::DisableAutoDeclareTargetRAII::DisableAutoDeclareTargetRAII(), EmitAtomicOp(), clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), EmitBaseInitializer(), emitCombinerOrInitializer(), emitCommonOMPTargetDirective(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(), clang::CodeGen::CGOpenMPRuntime::emitDeclareTargetFunction(), EmitDirectCallee(), clang::CodeGen::CGOpenMPRuntime::emitDistributeStaticInit(), clang::CodeGen::CodeGenPGO::emitEmptyCounterMapping(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), clang::CodeGen::CGOpenMPRuntime::emitForStaticFinish(), clang::CodeGen::CGDebugInfo::EmitFunctionDecl(), clang::CodeGen::CGDebugInfo::emitFunctionStart(), EmitGlobal(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), clang::CodeGen::CGDebugInfo::EmitLabel(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), EmitObjectDelete(), emitOMPAtomicCaptureExpr(), clang::CodeGen::CGOpenMPRuntime::emitTargetCall(), clang::CodeGen::CGOpenMPRuntime::emitTargetFunctions(), clang::CodeGen::CGOpenMPRuntime::emitTargetGlobalVariable(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskwaitCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskyieldCall(), EmitThreadPrivateVarDeclLValue(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), GenerateStringLiteral(), GenKernelArgMetadata(), clang::CodeGen::EHPersonality::get(), clang::CodeGen::CGOpenMPRuntime::getAddrOfArtificialThreadPrivate(), GetAddrOfConstantCFString(), clang::CodeGen::CGOpenMPRuntime::getAddrOfDeclareTargetVar(), clang::CodeGen::CGOpenMPRuntime::getAddrOfThreadPrivate(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddrOfThreadPrivate(), getAsmSrcLocInfo(), getBlockDescriptorName(), getBlockDescriptorType(), getCopyDestroyHelperFuncName(), getGenericBlockLiteralType(), clang::CodeGen::CGOpenCLRuntime::getGenericVoidPointerType(), clang::CodeGen::TargetCodeGenInfo::getGlobalVarAddressSpace(), clang::CodeGen::CodeGenFunction::getLangOpts(), getLLVMLinkageForDeclarator(), getMangledName(), getMangledNameImpl(), getNaturalTypeAlignment(), GetOrCreateLLVMGlobal(), clang::CodeGen::CGOpenMPRuntime::getOrCreateThreadPrivateCache(), getStaticDeclName(), getTBAAAccessInfo(), getTerminateFn(), clang::CodeGen::CGOpenMPRuntime::getThreadID(), getTypeInfoLinkage(), hasMRCWeakIvars(), initializeForBlockHeader(), clang::CodeGen::CGOpenMPRuntime::isNontemporalDecl(), clang::CodeGen::CGOpenMPRuntime::markAsGlobalTarget(), MaybeHandleStaticInExternC(), clang::CodeGen::CGOpenMPRuntime::NontemporalDeclsRAII::NontemporalDeclsRAII(), printPostfixForExternalizedDecl(), clang::CodeGen::CGOpenMPRuntime::registerTargetGlobalVariable(), Release(), clang::CodeGen::CodeGenVTables::RemoveHwasanMetadata(), clang::CodeGen::SanitizerMetadata::reportGlobal(), setARCRuntimeFunctionLinkage(), setGlobalVisibility(), shouldAssumeDSOLocal(), shouldEmitRTTI(), shouldMapVisibilityToDLLExport(), tryCaptureAsConstant(), UseOptimizedSetter(), clang::CodeGen::CGOpenMPRuntime::DisableAutoDeclareTargetRAII::~DisableAutoDeclareTargetRAII(), and clang::CodeGen::CGOpenMPRuntime::LastprivateConditionalRAII::~LastprivateConditionalRAII().

◆ getLLVMContext()

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

Definition at line 760 of file CodeGenModule.h.

Referenced by AddDependentLib(), AddDetectMismatch(), clang::CodeGen::CGDebugInfo::addHeapAllocSiteMetadata(), addLinkOptionsPostorder(), AddVTableTypeMetadata(), AdjustMemoryAttribute(), AppendLinkerOptions(), BuildAppleKextVirtualCall(), buildBlockDescriptor(), buildGlobalBlock(), castStringLiteralToDefaultAddressSpace(), computeBlockInfo(), ConstructAttributeList(), constStructWithPadding(), DecorateInstructionWithInvariantGroup(), clang::CodeGen::CoverageMappingModuleGen::emit(), EmitAnnotationString(), EmitAtomicOp(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(), EmitDeclDestroy(), EmitGlobalDeclMetadata(), EmitGlobalNamedRegister(), EmitHipStdParUnsupportedAsm(), clang::CodeGen::CGDebugInfo::EmitLabel(), clang::CodeGen::CGDebugInfo::EmitLexicalBlockStart(), clang::CodeGen::CGCXXABI::EmitLoadOfMemberFunctionPointer(), clang::CodeGen::CGDebugInfo::EmitLocation(), clang::CodeGen::CodeGenPGO::emitMCDCCondBitmapUpdate(), clang::CodeGen::CodeGenPGO::emitMCDCParameters(), clang::CodeGen::CodeGenPGO::emitMCDCTestVectorBitmapUpdate(), EmitSignBit(), EmitSpecialRegisterBuiltin(), clang::CodeGen::swiftcall::SwiftAggLowering::finish(), clang::CodeGen::ConstantAggregateBuilderBase::finishStruct(), GetAddrOfConstantCString(), GetAddrOfGlobalTemporary(), getClangCallTerminateFn(), clang::CodeGen::swiftcall::SwiftAggLowering::getCoerceAndExpandTypes(), getDynTlsOnDemandInitFn(), clang::CodeGen::CGOpenCLRuntime::getGenericVoidPointerType(), getGuardAbortFn(), getGuardAcquireFn(), getGuardReleaseFn(), getInitThreadAbortFn(), getInitThreadFooterFn(), getInitThreadHeaderFn(), clang::CodeGen::CGOpenMPRuntimeGPU::getKmpcAllocShared(), clang::CodeGen::CodeGenFunction::getLLVMContext(), clang::CodeGen::CGObjCRuntime::getMessageSendInfo(), getNoObjCARCExceptionsMetadata(), GetOrCreateLLVMGlobal(), getOrCreateStaticVarDecl(), clang::CodeGen::CGOpenCLRuntime::getPipeElemAlign(), clang::CodeGen::CGOpenCLRuntime::getPipeElemSize(), clang::CodeGen::CGOpenCLRuntime::getPointerType(), getTlsGuardVar(), clang::CodeGen::CodeGenVTables::getVTableType(), clang::CodeGen::initializationPatternFor(), initializeAlloca(), Release(), clang::CodeGen::CGDebugInfo::SourceLocToDebugLoc(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

◆ getLLVMLifetimeEndFn()

llvm::Function * CodeGenModule::getLLVMLifetimeEndFn ( )

Lazily declare the @llvm.lifetime.end intrinsic.

Definition at line 2474 of file CGDecl.cpp.

References clang::CodeGen::CodeGenTypeCache::AllocaInt8PtrTy, and getModule().

◆ getLLVMLifetimeStartFn()

llvm::Function * CodeGenModule::getLLVMLifetimeStartFn ( )

Lazily declare the @llvm.lifetime.start intrinsic.

Definition at line 2465 of file CGDecl.cpp.

References clang::CodeGen::CodeGenTypeCache::AllocaInt8PtrTy, and getModule().

◆ getLLVMLinkageForDeclarator()

llvm::GlobalValue::LinkageTypes CodeGenModule::getLLVMLinkageForDeclarator ( const DeclaratorDecl D,
GVALinkage  Linkage 
)

◆ getLLVMLinkageVarDefinition()

llvm::GlobalValue::LinkageTypes CodeGenModule::getLLVMLinkageVarDefinition ( const VarDecl VD)

◆ GetLLVMVisibility()

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

◆ getMangledName()

StringRef CodeGenModule::getMangledName ( GlobalDecl  GD)

◆ getMangledNameDecl()

const GlobalDecl CodeGenModule::getMangledNameDecl ( StringRef  Name)

Definition at line 1969 of file CodeGenModule.cpp.

Referenced by clang::CodeGen::CGDebugInfo::EmitGlobalAlias().

◆ getMemberPointerConstant()

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

◆ getMicrosoftVTableContext()

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

◆ getMinimumClassObjectSize()

CharUnits CodeGenModule::getMinimumClassObjectSize ( const CXXRecordDecl RD)

Returns the minimum object size for an object of the given class type (or a class derived from it).

Return the smallest possible amount of storage that might be allocated starting from the beginning of an object of a particular class.

This may be smaller than sizeof(RD) if RD has virtual base classes.

Definition at line 59 of file CGClass.cpp.

References clang::ASTContext::getASTRecordLayout(), getContext(), clang::ASTRecordLayout::getSize(), clang::CXXRecordDecl::hasDefinition(), clang::CXXRecordDecl::isEffectivelyFinal(), and clang::CharUnits::One().

Referenced by getMinimumObjectSize().

◆ getMinimumObjectSize()

CharUnits clang::CodeGen::CodeGenModule::getMinimumObjectSize ( QualType  Ty)
inline

Returns the minimum object size for an object of the given type.

Definition at line 975 of file CodeGenModule.h.

References clang::Type::getAsCXXRecordDecl(), getContext(), getMinimumClassObjectSize(), and clang::ASTContext::getTypeSizeInChars().

Referenced by ConstructAttributeList().

◆ getModule()

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

Definition at line 749 of file CodeGenModule.h.

Referenced by buildBlockDescriptor(), buildGlobalBlock(), CodeGenModule(), clang::CodeGen::TargetCodeGenInfo::createEnqueuedBlockKernel(), CreateGlobalInitOrCleanUpFunction(), CreateOrReplaceCXXRuntimeVariable(), createReferenceTemporary(), createRuntimeShuffleFunction(), createUnnamedGlobalFrom(), clang::CodeGen::CoverageMappingModuleGen::emit(), EmitAnnotationArgs(), EmitAnnotationString(), emitAutoreleasedReturnValueMarker(), clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntime::emitCancelCall(), clang::CodeGen::CGOpenMPRuntime::emitCancellationPointCall(), emitCombinerOrInitializer(), emitCopyprivateCopyFunction(), clang::CodeGen::CGOpenMPRuntime::emitCriticalRegion(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), clang::CodeGen::CGOpenMPRuntime::emitDeclareTargetFunction(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDestroyClause(), emitDestructorsFunction(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), EmitDoacrossOrdered(), clang::CodeGen::CGHLSLRuntime::emitEntryFunction(), clang::CodeGen::CGOpenMPRuntime::emitErrorCall(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), clang::CodeGen::CGOpenMPRuntime::emitForStaticFinish(), EmitGlobalAnnotations(), EmitGlobalDeclMetadata(), EmitGlobalNamedRegister(), emitGlobalToListCopyFunction(), emitGlobalToListReduceFunction(), EmitHipStdParUnsupportedAsm(), EmitHipStdParUnsupportedBuiltin(), emitInitWithReductionInitializer(), emitInterWarpCopyFunction(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalFinalUpdate(), emitListToGlobalCopyFunction(), emitListToGlobalReduceFunction(), EmitMainVoidAlias(), clang::CodeGen::CGOpenMPRuntime::emitMaskedRegion(), clang::CodeGen::CGOpenMPRuntime::emitMasterRegion(), EmitNullBaseClassInitialization(), clang::CodeGen::CGOpenMPRuntime::emitNumTeamsClause(), clang::CodeGen::CGOpenMPRuntime::emitNumThreadsClause(), EmitOMPAllocateDecl(), clang::CodeGen::CGOpenMPRuntime::emitOrderedRegion(), emitOutlinedFunctionPrologue(), clang::CodeGen::CGOpenMPRuntime::emitParallelCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitParallelCall(), clang::CodeGen::CGOpenMPRuntime::emitProcBindClause(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), clang::CodeGen::CGOpenMPRuntime::emitReductionFunction(), emitShuffleAndReduceFunction(), clang::CodeGen::CGOpenMPRuntime::emitSingleRegion(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataStandAloneCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskCall(), emitTaskDupFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskgroupRegion(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskOutlinedFunction(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionFini(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskwaitCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskyieldCall(), clang::CodeGen::CGOpenMPRuntime::emitTeamsCall(), clang::CodeGen::CGOpenMPRuntime::emitThreadLimitClause(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarInit(), EmitTopLevelDecl(), clang::CodeGen::CGOpenMPRuntime::emitUDMapperArrayInitOrDel(), emitUsed(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsFini(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsInit(), clang::CodeGen::CodeGenVTables::EmitVTTDefinition(), finalizeKCFITypes(), clang::CodeGen::CGHLSLRuntime::finishCodeGen(), generateByrefCopyHelper(), generateByrefDisposeHelper(), clang::CodeGen::CodeGenVTables::GenerateConstructionVTable(), clang::CodeGen::CGHLSLRuntime::generateGlobalCtorDtorCalls(), clang::CodeGen::CodeGenVTables::GenerateRelativeVTableAlias(), GenerateStringLiteral(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntimeGPU::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntime::getAddrOfArtificialThreadPrivate(), GetAddrOfConstantCFString(), clang::CodeGen::ConstantAggregateBuilderBase::getAddrOfCurrentPosition(), GetAddrOfGlobalTemporary(), GetAddrOfMSGuidDecl(), clang::CodeGen::ConstantAggregateBuilderBase::getAddrOfPosition(), GetAddrOfTemplateParamObject(), clang::CodeGen::CGOpenMPRuntime::getAddrOfThreadPrivate(), GetAddrOfUnnamedGlobalConstantDecl(), getClangCallTerminateFn(), clang::CodeGen::ConstantEmitter::getCurrentAddrPrivate(), GetGlobalValue(), clang::CodeGen::CGOpenMPRuntimeGPU::getGPUNumThreads(), clang::CodeGen::CGOpenMPRuntimeGPU::getGPUThreadID(), clang::CodeGen::CGOpenMPRuntimeGPU::getGPUWarpSize(), getInitThreadEpochPtr(), getIntrinsic(), clang::CodeGen::CGOpenMPRuntimeGPU::getKmpcAllocShared(), clang::CodeGen::CGOpenMPRuntimeGPU::getKmpcFreeShared(), getLLVMLifetimeEndFn(), getLLVMLifetimeStartFn(), GetOrCreateLLVMGlobal(), getOrCreateStaticVarDecl(), getSanStats(), clang::CodeGen::CGOpenMPRuntime::getTaskReductionItem(), clang::CodeGen::CGOpenMPRuntime::getThreadID(), getTypeInfoVTable(), Release(), setThunkProperties(), TryEmitBaseDestructorAsAlias(), and clang::CodeGen::CodeGenPGO::valueProfile().

◆ getModuleDebugInfo()

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

◆ getModuleNameHash()

const std::string & clang::CodeGen::CodeGenModule::getModuleNameHash ( ) const
inline

Definition at line 637 of file CodeGenModule.h.

Referenced by getMangledNameImpl(), and isUniqueInternalLinkageDecl().

◆ getMostBaseClasses()

SmallVector< const CXXRecordDecl *, 0 > 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 2316 of file CodeGenModule.cpp.

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

Referenced by SetLLVMFunctionAttributesForDefinition().

◆ getNaturalPointeeTypeAlignment()

CharUnits CodeGenModule::getNaturalPointeeTypeAlignment ( QualType  T,
LValueBaseInfo BaseInfo = nullptr,
TBAAAccessInfo TBAAInfo = nullptr 
)

◆ getNaturalTypeAlignment()

CharUnits CodeGenModule::getNaturalTypeAlignment ( QualType  T,
LValueBaseInfo BaseInfo = nullptr,
TBAAAccessInfo TBAAInfo = nullptr,
bool  forPointeeType = false 
)

◆ 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 199 of file CGClass.cpp.

References computeNonVirtualBaseClassOffset(), clang::CodeGen::CodeGenTypes::ConvertType(), getContext(), and clang::CodeGen::CodeGenTypeCache::PtrDiffTy.

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

◆ getNoObjCARCExceptionsMetadata()

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

Definition at line 732 of file CodeGenModule.h.

References getLLVMContext().

◆ getNSConcreteGlobalBlock()

llvm::Constant * CodeGenModule::getNSConcreteGlobalBlock ( )

◆ getNSConcreteStackBlock()

llvm::Constant * CodeGenModule::getNSConcreteStackBlock ( )

◆ getNullPointer()

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

Get target specific null pointer.

Parameters
Tis the LLVM type of the null pointer.
QTis the clang QualType of the null pointer.

Definition at line 1798 of file CGExprConstant.cpp.

References clang::CodeGen::TargetCodeGenInfo::getNullPointer(), and getTargetCodeGenInfo().

Referenced by EmitNullConstant().

◆ getObjCEntrypoints()

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

◆ getObjCFastEnumerationStateType()

QualType CodeGenModule::getObjCFastEnumerationStateType ( )

◆ getObjCRuntime()

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

◆ getOMPAllocateAlignment()

std::optional< CharUnits > CodeGenModule::getOMPAllocateAlignment ( const VarDecl VD)

◆ getOpenCLRuntime()

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

◆ getOpenMPRuntime()

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

Return a reference to the configured OpenMP runtime.

Definition at line 646 of file CodeGenModule.h.

Referenced by checkForLastprivateConditionalUpdate(), createRuntimeShuffleFunction(), clang::CodeGen::CGOpenMPRuntime::DisableAutoDeclareTargetRAII::DisableAutoDeclareTargetRAII(), clang::CodeGen::CGOpenMPRuntime::emitCancelCall(), emitCombinerOrInitializer(), emitCommonOMPParallelDirective(), emitCommonOMPTargetDirective(), emitCommonOMPTeamsDirective(), emitCommonSimdLoop(), emitCopyprivateCopyFunction(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), emitDeclTargetVarDeclLValue(), clang::CodeGen::CGOpenMPRuntime::emitDeferredTargetDecls(), emitDestructorsFunction(), EmitDoacrossOrdered(), clang::CodeGen::CGOpenMPRuntimeGPU::emitFunctionProlog(), EmitGlobal(), emitGlobalToListReduceFunction(), emitInitWithReductionInitializer(), emitInterWarpCopyFunction(), emitListToGlobalReduceFunction(), emitMasked(), emitMaster(), emitOffloadingArrays(), emitOMPAtomicCaptureExpr(), emitOMPAtomicCompareExpr(), emitOMPAtomicReadExpr(), emitOMPAtomicUpdateExpr(), emitOMPAtomicWriteExpr(), emitOMPCopyinClause(), EmitOMPDeclareMapper(), EmitOMPDeclareReduction(), EmitOMPRequiresDecl(), emitOMPSimdRegion(), EmitOMPThreadPrivateDecl(), emitOutlinedFunctionPrologue(), clang::CodeGen::CGOpenMPRuntime::emitParallelCall(), emitParallelOrTeamsOutlinedFunction(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), emitReductionCombiner(), emitShuffleAndReduceFunction(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataCalls(), emitTargetParallelRegion(), emitTargetRegion(), emitTargetTeamsDistributeParallelForRegion(), emitTargetTeamsDistributeParallelForSimdRegion(), emitTargetTeamsDistributeRegion(), emitTargetTeamsDistributeSimdRegion(), emitTargetTeamsGenericLoopRegion(), emitTargetTeamsRegion(), emitTaskDupFunction(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntimeGPU::emitTeamsOutlinedFunction(), EmitThreadPrivateVarDeclLValue(), emitWorksharingDirective(), generateUniqueName(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddrOfThreadPrivate(), clang::CodeGen::CGOpenMPRuntimeGPU::getDefaultDistScheduleAndChunk(), getNVPTXLaneID(), getNVPTXWarpID(), GetOrCreateLLVMGlobal(), clang::CodeGen::CGOpenMPRuntime::isNontemporalDecl(), clang::CodeGen::CGOpenMPRuntime::NontemporalDeclsRAII::NontemporalDeclsRAII(), clang::CodeGen::CGOpenMPRuntime::UntiedTaskLocalDeclsRAII::UntiedTaskLocalDeclsRAII(), clang::CodeGen::CGOpenMPRuntime::DisableAutoDeclareTargetRAII::~DisableAutoDeclareTargetRAII(), clang::CodeGen::CGOpenMPRuntime::LastprivateConditionalRAII::~LastprivateConditionalRAII(), clang::CodeGen::CGOpenMPRuntime::NontemporalDeclsRAII::~NontemporalDeclsRAII(), and clang::CodeGen::CGOpenMPRuntime::UntiedTaskLocalDeclsRAII::~UntiedTaskLocalDeclsRAII().

◆ GetOrCreateLLVMGlobal()

llvm::Constant * CodeGenModule::GetOrCreateLLVMGlobal ( StringRef  MangledName,
llvm::Type *  Ty,
LangAS  AddrSpace,
const VarDecl D,
ForDefinition_t  IsForDefinition = NotForDefinition 
)

GetOrCreateLLVMGlobal - If the specified mangled name is not in the module, create and return an llvm GlobalVariable with the specified type and address space.

If there is something in the module with the specified name, return it potentially bitcasted to the right type.

If D is non-null, it specifies a decl that correspond to this. This is used to set the attributes on the global when it is first created.

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 4745 of file CodeGenModule.cpp.

References clang::CLanguageLinkage, clang::CUDA, clang::VarDecl::DeclarationOnly, clang::Default, 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(), getCUDARuntime(), clang::GlobalDecl::getDecl(), getDiags(), GetGlobalValue(), GetGlobalVarAddressSpace(), clang::ASTContext::getLangOpts(), getLangOpts(), clang::VarDecl::getLanguageLinkage(), clang::LinkageInfo::getLinkage(), clang::NamedDecl::getLinkageAndVisibility(), getLLVMContext(), clang::Decl::getLocation(), getModule(), getOpenMPRuntime(), clang::ASTContext::getTargetAddressSpace(), getTargetCodeGenInfo(), clang::VarDecl::getTLSKind(), getTriple(), clang::ValueDecl::getType(), clang::CodeGen::CGCUDARuntime::handleVarRegistration(), clang::Decl::hasAttr(), clang::VarDecl::hasDefinition(), clang::VarDecl::hasExternalStorage(), clang::VarDecl::hasInit(), clang::CXXRecordDecl::hasMutableFields(), clang::Init, clang::QualType::isConstant(), clang::QualType::isConstantStorage(), clang::QualType::isConstQualified(), clang::isExternallyVisible(), clang::VarDecl::isThisDeclarationADefinition(), lookupRepresentativeDecl(), clang::opencl_global, clang::CodeGen::TargetCodeGenInfo::performAddrSpaceCast(), clang::CodeGen::CGOpenMPRuntime::registerTargetGlobalVariable(), clang::DiagnosticsEngine::Report(), setGVProperties(), setLinkageForGV(), clang::CodeGen::TargetCodeGenInfo::setTargetAttributes(), setTLSMode(), shouldMapVisibilityToDLLExport(), clang::VarDecl::TLS_Dynamic, and clang::CodeGen::ConstantEmitter::tryEmitForInitializer().

Referenced by CreateRuntimeVariable(), GetAddrOfGlobalVar(), getNSConcreteGlobalBlock(), getNSConcreteStackBlock(), and GetWeakRefReference().

◆ getOrCreateStaticVarDecl()

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

◆ getPGOReader()

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

◆ getPGOStats()

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

Definition at line 674 of file CodeGenModule.h.

◆ getPreprocessorOpts()

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

Definition at line 746 of file CodeGenModule.h.

◆ getSanitizerMetadata()

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

Definition at line 1374 of file CodeGenModule.h.

◆ getSanStats()

llvm::SanitizerStatReport & CodeGenModule::getSanStats ( )

Definition at line 7429 of file CodeGenModule.cpp.

References getModule().

◆ getSize()

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

◆ getStaticLocalDeclAddress()

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

Definition at line 681 of file CodeGenModule.h.

◆ getStaticLocalDeclGuardAddress()

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

Definition at line 693 of file CodeGenModule.h.

◆ getTarget()

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

Definition at line 754 of file CodeGenModule.h.

Referenced by AddDependentLib(), addLinkOptionsPostorder(), AppendCPUSpecificCPUDispatchMangling(), ApplyNonVirtualAndVirtualOffset(), clang::CodeGen::CodeGenPGO::assignRegionCounters(), BuildAppleKextVirtualCall(), buildGlobalBlock(), clang::CodeGen::computeSPIRKernelABIInfo(), configureBlocksRuntimeObject(), CreateGlobalInitOrCleanUpFunction(), createTargetCodeGenInfo(), clang::CodeGen::CGCXXABI::EmitCtorCompleteObjectHandler(), clang::CodeGen::CGOpenMPRuntime::emitDeclareSimdFunction(), clang::CodeGen::CGDebugInfo::EmitFunctionDecl(), clang::CodeGen::CGHLSLRuntime::emitInputSemantic(), emitIsPlatformVersionAtLeast(), clang::CodeGen::CGOpenMPRuntimeGPU::emitTeamsOutlinedFunction(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), clang::CodeGen::CGHLSLRuntime::finishCodeGen(), clang::CodeGen::EHPersonality::get(), getAddrAndTypeOfCXXStructor(), clang::CodeGen::CGOpenMPRuntime::getAddrOfArtificialThreadPrivate(), GetAddrOfFunction(), getBuiltinLibFunction(), getCodegenToUse(), getCPUSpecificMangling(), getCudaArch(), GetGlobalConstantAddressSpace(), getMangledName(), getTerminateFn(), getVTableLinkage(), hasInAllocaArgs(), initializeForBlockHeader(), isThreadWrapperReplaceable(), isTrivialForMSVC(), clang::CodeGen::CodeGenVTables::isVTableExternal(), Release(), ReturnTypeUsesFP2Ret(), ReturnTypeUsesFPRet(), SetLLVMFunctionAttributesForDefinition(), shouldEmitVTableThunk(), ShouldUseExternalRTTIDescriptor(), TryEmitBaseDestructorAsAlias(), and UseRelativeLayout().

◆ getTargetCodeGenInfo()

const TargetCodeGenInfo & CodeGenModule::getTargetCodeGenInfo ( )

◆ GetTargetTypeStoreSize()

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

◆ getTBAAAccessInfo()

TBAAAccessInfo CodeGenModule::getTBAAAccessInfo ( QualType  AccessType)

◆ getTBAAAccessTagInfo()

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

getTBAAAccessTagInfo - Get TBAA tag for a given memory access.

Definition at line 1437 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 1431 of file CodeGenModule.cpp.

◆ 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 823 of file CodeGenModule.h.

References clang::CodeGen::TBAAAccessInfo::getMayAliasInfo(), and getTBAAAccessInfo().

Referenced by loadToBegin().

◆ getTBAAStructInfo()

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

Definition at line 1425 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 1393 of file CodeGenModule.cpp.

◆ getTBAAVTablePtrAccessInfo()

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

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

Definition at line 1419 of file CodeGenModule.cpp.

◆ getTerminateFn()

llvm::FunctionCallee CodeGenModule::getTerminateFn ( )

◆ getTriple()

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

◆ getTypeDescriptorFromMap()

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

Definition at line 723 of file CodeGenModule.h.

◆ getTypes()

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

Definition at line 766 of file CodeGenModule.h.

Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), addX86InterruptAttrs(), clang::CodeGen::arrangeCXXMethodType(), clang::CodeGen::arrangeFreeFunctionCall(), clang::CodeGen::arrangeFreeFunctionType(), clang::CodeGen::arrangeObjCMessageSendSignature(), buildBlockDescriptor(), buildGlobalBlock(), canEmitDelegateCallArgs(), codegenCXXStructor(), CodeGenModule(), computeBlockInfo(), clang::CodeGen::computeSPIRKernelABIInfo(), ConstructAttributeList(), clang::CodeGen::convertFreeFunctionType(), clang::CodeGen::CGCXXABI::ConvertMemberPointerType(), clang::CodeGen::convertTypeForMemory(), clang::CodeGen::createAArch64TargetCodeGenInfo(), clang::CodeGen::createAIXTargetCodeGenInfo(), clang::CodeGen::createAMDGPUTargetCodeGenInfo(), clang::CodeGen::createARCTargetCodeGenInfo(), clang::CodeGen::createARMTargetCodeGenInfo(), clang::CodeGen::createAVRTargetCodeGenInfo(), clang::CodeGen::createBPFTargetCodeGenInfo(), clang::CodeGen::createCommonSPIRTargetCodeGenInfo(), clang::CodeGen::createCSKYTargetCodeGenInfo(), clang::CodeGen::createDefaultTargetCodeGenInfo(), createGlobalInitOrCleanupFn(), clang::CodeGen::createHexagonTargetCodeGenInfo(), clang::CodeGen::createLanaiTargetCodeGenInfo(), clang::CodeGen::createLoongArchTargetCodeGenInfo(), clang::CodeGen::createM68kTargetCodeGenInfo(), clang::CodeGen::createMIPSTargetCodeGenInfo(), clang::CodeGen::createMSP430TargetCodeGenInfo(), clang::CodeGen::createNVPTXTargetCodeGenInfo(), clang::CodeGen::createPNaClTargetCodeGenInfo(), clang::CodeGen::createPPC32TargetCodeGenInfo(), clang::CodeGen::createPPC64_SVR4_TargetCodeGenInfo(), clang::CodeGen::createPPC64TargetCodeGenInfo(), clang::CodeGen::createRISCVTargetCodeGenInfo(), clang::CodeGen::createSparcV8TargetCodeGenInfo(), clang::CodeGen::createSparcV9TargetCodeGenInfo(), clang::CodeGen::createSPIRVTargetCodeGenInfo(), clang::CodeGen::createSystemZTargetCodeGenInfo(), clang::CodeGen::createTCETargetCodeGenInfo(), clang::CodeGen::createVETargetCodeGenInfo(), clang::CodeGen::createWebAssemblyTargetCodeGenInfo(), clang::CodeGen::createWindowsAArch64TargetCodeGenInfo(), clang::CodeGen::createWindowsARMTargetCodeGenInfo(), clang::CodeGen::createWinX86_32TargetCodeGenInfo(), clang::CodeGen::createWinX86_64TargetCodeGenInfo(), clang::CodeGen::createX86_32TargetCodeGenInfo(), clang::CodeGen::createX86_64TargetCodeGenInfo(), clang::CodeGen::createXCoreTargetCodeGenInfo(), emitAddrOfFieldStorage(), emitAtomicLibcall(), emitCombinerOrInitializer(), emitConstantObjCStringLiteral(), emitCopyprivateCopyFunction(), emitDestructorsFunction(), clang::CodeGen::ConstantEmitter::emitForMemory(), EmitGlobal(), emitGlobalToListCopyFunction(), emitGlobalToListReduceFunction(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), EmitHipStdParUnsupportedBuiltin(), emitInterWarpCopyFunction(), clang::CodeGen::CGOpenMPRuntime::emitKmpRoutineEntryT(), emitListToGlobalCopyFunction(), emitListToGlobalReduceFunction(), EmitNewDeleteCall(), EmitNullConstant(), EmitNullConstant(), EmitNullConstantForBase(), EmitOMPAllocateDecl(), EmitOMPThreadPrivateDecl(), emitOutlinedFunctionPrologue(), emitPreserveStructAccess(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), clang::CodeGen::CGOpenMPRuntime::emitReductionFunction(), emitShuffleAndReduceFunction(), emitTaskDupFunction(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), generateByrefCopyHelper(), generateByrefDisposeHelper(), getAddrAndTypeOfCXXStructor(), GetAddrOfConstantCFString(), clang::CodeGen::CGOpenMPRuntime::getAddrOfDeclareTargetVar(), GetAddrOfFunction(), GetAddrOfGlobal(), GetAddrOfGlobalTemporary(), GetAddrOfGlobalVar(), GetAddrOfMSGuidDecl(), getAllocatorVal(), getBlockDescriptorType(), clang::CodeGen::CGCXXABI::GetBogusMemberPointer(), getBuiltinLibFunction(), getClangCallTerminateFn(), GetConstantArrayFromStringLiteral(), clang::CodeGen::CodeGenTypes::GetFunctionType(), getGEPIndicesToField(), getGuardAcquireFn(), clang::CodeGen::getLLVMFieldNumber(), clang::CodeGen::CGObjCRuntime::getMessageSendInfo(), getOrCreateStaticVarDecl(), clang::CodeGen::CodeGenFunction::getTypes(), GetWeakRefReference(), isTrivialForMSVC(), clang::CodeGen::CGOpenMPRuntime::registerTargetGlobalVariable(), setUsedBits(), TryEmitBaseDestructorAsAlias(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

◆ getUniqueBlockCount()

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

Fetches the global unique block count.

Definition at line 1008 of file CodeGenModule.h.

Referenced by clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable().

◆ getVBaseAlignment()

CharUnits CodeGenModule::getVBaseAlignment ( CharUnits  DerivedAlign,
const CXXRecordDecl Derived,
const CXXRecordDecl VBase 
)

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 76 of file CGClass.cpp.

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

Referenced by ApplyNonVirtualAndVirtualOffset().

◆ GetVCallVisibilityLevel()

llvm::GlobalObject::VCallVisibility CodeGenModule::GetVCallVisibilityLevel ( const CXXRecordDecl RD,
llvm::DenseSet< const CXXRecordDecl * > &  Visited 
)

Returns the vcall visibility of the given type.

This is the scope in which a virtual function call could be made which ends up being dispatched to a member function of this class. This scope can be wider than the visibility of the class itself when the class has a more-visible dynamic base class. The client should pass in an empty Visited set, which is used to prevent redundant recursive processing.

Definition at line 1271 of file CGVTables.cpp.

References clang::CXXRecordDecl::bases(), clang::LinkageInfo::getLinkage(), clang::NamedDecl::getLinkageAndVisibility(), GetVCallVisibilityLevel(), HasHiddenLTOVisibility(), clang::isExternallyVisible(), clang::CXXRecordDecl::vbases(), and Visited.

Referenced by EmitVTableTypeMetadata(), and GetVCallVisibilityLevel().

◆ getVTableComponentType()

llvm::Type * CodeGenModule::getVTableComponentType ( ) const

◆ getVTableLinkage()

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

◆ getVTables()

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

◆ GetWeakRefReference()

ConstantAddress CodeGenModule::GetWeakRefReference ( const ValueDecl VD)

◆ handleAMDGPUFlatWorkGroupSizeAttr()

void CodeGenModule::handleAMDGPUFlatWorkGroupSizeAttr ( llvm::Function *  F,
const AMDGPUFlatWorkGroupSizeAttr *  A,
const ReqdWorkGroupSizeAttr *  ReqdWGS = nullptr,
int32_t *  MinThreadsVal = nullptr,
int32_t *  MaxThreadsVal = nullptr 
)

Emit the IR encoding to attach the AMD GPU flat-work-group-size attribute to F.

Alternatively, the work group size can be taken from a ReqdWGS. If MinThreadsVal is not nullptr, the min threads value is stored in it, if a valid one was found. If MaxThreadsVal is not nullptr, the max threads value is stored in it, if a valid one was found.

Definition at line 627 of file AMDGPU.cpp.

References getContext(), clang::Max, and clang::Min.

Referenced by clang::CodeGen::CGOpenMPRuntime::computeMinAndMaxThreadsAndTeams().

◆ handleAMDGPUWavesPerEUAttr()

void CodeGenModule::handleAMDGPUWavesPerEUAttr ( llvm::Function *  F,
const AMDGPUWavesPerEUAttr *  A 
)

Emit the IR encoding to attach the AMD GPU waves-per-eu attribute to F.

Definition at line 654 of file AMDGPU.cpp.

References getContext(), clang::Max, and clang::Min.

Referenced by clang::CodeGen::CGOpenMPRuntime::emitTargetOutlinedFunctionHelper().

◆ handleCUDALaunchBoundsAttr()

void CodeGenModule::handleCUDALaunchBoundsAttr ( llvm::Function *  F,
const CUDALaunchBoundsAttr *  A,
int32_t *  MaxThreadsVal = nullptr,
int32_t *  MinBlocksVal = nullptr,
int32_t *  MaxClusterRankVal = nullptr 
)

Emit the IR encoding to attach the CUDA launch bounds attribute to F.

If MaxThreadsVal is not nullptr, the max threads value is stored in it, if a valid one was found.

Definition at line 308 of file NVPTX.cpp.

References getContext().

Referenced by clang::CodeGen::CGOpenMPRuntime::computeMinAndMaxThreadsAndTeams().

◆ HandleCXXStaticMemberVarInstantiation()

void CodeGenModule::HandleCXXStaticMemberVarInstantiation ( VarDecl VD)

◆ 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 1259 of file CGVTables.cpp.

References AlwaysHasLTOVisibilityPublic(), clang::LinkageInfo::getLinkage(), clang::NamedDecl::getLinkageAndVisibility(), getTriple(), clang::LinkageInfo::getVisibility(), clang::HiddenVisibility, and clang::isExternallyVisible().

Referenced by GetVCallVisibilityLevel(), and requiresMemberFunctionPointerTypeMetadata().

◆ hasObjCRuntime()

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

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

Definition at line 635 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 3348 of file CodeGenModule.cpp.

References Category, getContext(), clang::ASTContext::getXRayFilter(), and clang::SourceLocation::isValid().

◆ isFunctionBlockedByProfileList()

ProfileList::ExclusionType CodeGenModule::isFunctionBlockedByProfileList ( llvm::Function *  Fn,
SourceLocation  Loc 
) const

◆ isFunctionBlockedFromProfileInstr()

ProfileList::ExclusionType CodeGenModule::isFunctionBlockedFromProfileInstr ( llvm::Function *  Fn,
SourceLocation  Loc 
) const
Returns
true if Fn at Loc should be excluded from profile instrumentation.

Definition at line 3399 of file CodeGenModule.cpp.

References clang::ProfileList::Allow, getCodeGenOpts(), isFunctionBlockedByProfileList(), clang::ProfileList::Skip, and V.

◆ isInNoSanitizeList() [1/2]

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

◆ isInNoSanitizeList() [2/2]

bool CodeGenModule::isInNoSanitizeList ( SanitizerMask  Kind,
llvm::GlobalVariable *  GV,
SourceLocation  Loc,
QualType  Ty,
StringRef  Category = StringRef() 
) const

◆ isPaddedAtomicType() [1/2]

bool CodeGenModule::isPaddedAtomicType ( const AtomicType type)

◆ isPaddedAtomicType() [2/2]

bool CodeGenModule::isPaddedAtomicType ( QualType  type)

Definition at line 722 of file CodeGenTypes.cpp.

References isPaddedAtomicType(), and clang::ast_matchers::type.

Referenced by isPaddedAtomicType().

◆ lookupRepresentativeDecl()

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

Definition at line 7191 of file CodeGenModule.cpp.

References clang::Result.

Referenced by GetOrCreateLLVMGlobal().

◆ 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 5155 of file CodeGenModule.cpp.

References clang::CPlusPlus, clang::First, getLangOpts(), and clang::Internal.

◆ maybeSetTrivialComdat()

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

Definition at line 5216 of file CodeGenModule.cpp.

References shouldBeInCOMDAT().

◆ MayDropFunctionReturn()

bool CodeGenModule::MayDropFunctionReturn ( const ASTContext Context,
QualType  ReturnType 
) const

Whether this function's return type has no side effects, and thus may be trivially discarded if it is unused.

Definition at line 1814 of file CGCall.cpp.

References clang::Type::getAs(), clang::QualType::getCanonicalType(), and clang::QualType::isTriviallyCopyableType().

◆ mergeTBAAInfoForCast()

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

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

Definition at line 1443 of file CodeGenModule.cpp.

Referenced by emitOMPArraySectionBase(), and EmitPointerWithAlignment().

◆ mergeTBAAInfoForConditionalOperator()

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

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

Definition at line 1451 of file CodeGenModule.cpp.

◆ mergeTBAAInfoForMemoryTransfer()

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

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

Definition at line 1459 of file CodeGenModule.cpp.

◆ moveLazyEmissionStates()

void CodeGenModule::moveLazyEmissionStates ( CodeGenModule NewBuilder)

Move some lazily-emitted states to the NewBuilder.

This is especially essential for the incremental parsing environment like Clang Interpreter, because we'll lose all important information after each repl.

Definition at line 7582 of file CodeGenModule.cpp.

◆ NeedAllVtablesTypeId()

bool CodeGenModule::NeedAllVtablesTypeId ( ) const

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

Definition at line 7398 of file CodeGenModule.cpp.

References clang::SanitizerSet::has(), clang::LangOptions::Sanitize, and clang::CodeGenOptions::SanitizeTrap.

Referenced by AddVTableTypeMetadata().

◆ printPostfixForExternalizedDecl()

void CodeGenModule::printPostfixForExternalizedDecl ( llvm::raw_ostream &  OS,
const Decl D 
) const

Print the postfix for externalized static variable or kernels for single source offloading languages CUDA and HIP.

The unique postfix is created using either the CUID argument, or the file's UniqueID and active macros. The fallback method without a CUID requires that the offloading toolchain does not define separate macros via the -cc1 options.

Definition at line 7544 of file CodeGenModule.cpp.

References clang::LangOptions::CUID, getContext(), clang::ASTContext::getCUIDHash(), clang::PresumedLoc::getFilename(), getLangOpts(), clang::Decl::getLocation(), clang::ASTContext::getSourceManager(), clang::PresumedLoc::isValid(), clang::PreprocessorOptions::Macros, clang::Result, and SM.

Referenced by getMangledNameImpl().

◆ RefreshTypeCacheForClass()

void CodeGenModule::RefreshTypeCacheForClass ( const CXXRecordDecl Class)

◆ Release()

void CodeGenModule::Release ( )

Finalize LLVM code generation.

Definition at line 830 of file CodeGenModule.cpp.

References addCompilerUsedGlobal(), AddGlobalCtor(), clang::CodeGenOptions::All, clang::ASTContext::CUDAExternalDeviceDeclODRUsedByHost, clang::EmbedObject(), clang::CodeGen::CodeGenFunction::EmitCfiCheckFail(), clang::CodeGen::CodeGenFunction::EmitCfiCheckStub(), EmitDeferredUnusedCoverageMappings(), EmitGlobalAnnotations(), EmitMainVoidAlias(), clang::CodeGen::TargetCodeGenInfo::emitTargetGlobals(), clang::CodeGen::TargetCodeGenInfo::emitTargetMetadata(), clang::TargetOptions::Features, finalizeKCFITypes(), clang::CodeGen::CGHLSLRuntime::finishCodeGen(), clang::CodeGenOptions::FP32DenormalMode, GetAddrOfGlobal(), clang::getClangVendor(), getCodeGenOpts(), getContext(), clang::ASTContext::getCurrentNamedModule(), getDiags(), clang::Decl::getEndLoc(), getHLSLRuntime(), clang::ASTContext::getLangOpts(), getLangOpts(), clang::LangStandard::getLangStandardForKind(), getLLVMContext(), getModule(), getModuleDebugInfo(), clang::LangOptions::getOpenCLCompatibleVersion(), clang::CharUnits::getQuantity(), getTarget(), getTargetCodeGenInfo(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTargetOpts(), clang::TargetInfo::getTriple(), getTriple(), clang::ASTContext::getTypeSizeInChars(), clang::ASTContext::getWideCharType(), clang::SanitizerSet::has(), clang::CodeGen::InstrProfStats::hasDiagnostics(), clang::TargetInfo::hasFeature(), clang::LangOptions::hasSignReturnAddress(), clang::TargetOptions::Hostcall, clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenTypeCache::Int8Ty, INT_MAX, clang::Module::isHeaderLikeModule(), clang::Module::isInterfaceOrPartition(), clang::LangOptions::isSignReturnAddressScopeAll(), clang::LangOptions::isSignReturnAddressWithAKey(), clang::Kernel, clang::LangOptions::LangStd, clang::LangStandard::Language, clang::languageToString(), clang::CodeGen::CodeGenModule::Structor::LexOrder, clang::CodeGenOptions::MemoryProfileOutput, clang::CodeGenOptions::None, clang::LangOptionsBase::None, clang::CodeGenOptions::NonLeaf, clang::CodeGen::InstrProfStats::reportDiagnostics(), clang::LangOptions::Sanitize, clang::CodeGen::CodeGenPGO::setProfileVersion(), clang::CodeGen::CodeGenPGO::setValueProfilingFlag(), setVisibilityFromDLLStorageClass(), and clang::PreprocessorOptions::SourceDateEpoch.

◆ 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 1586 of file CGCall.cpp.

References clang::CodeGen::TargetCodeGenInfo::doesReturnSlotInterfereWithArgs(), getTargetCodeGenInfo(), and ReturnTypeUsesSRet().

◆ ReturnTypeUsesFP2Ret()

bool CodeGenModule::ReturnTypeUsesFP2Ret ( QualType  ResultType)

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

Definition at line 1608 of file CGCall.cpp.

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

◆ ReturnTypeUsesFPRet()

bool CodeGenModule::ReturnTypeUsesFPRet ( QualType  ResultType)

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

Definition at line 1591 of file CGCall.cpp.

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

◆ ReturnTypeUsesSRet()

bool CodeGenModule::ReturnTypeUsesSRet ( const CGFunctionInfo FI)

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

Definition at line 1581 of file CGCall.cpp.

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

Referenced by ReturnSlotInterferesWithArgs().

◆ 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 2232 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 1248 of file CGBlocks.cpp.

Referenced by buildGlobalBlock().

◆ setAtomicGetterHelperFnMap()

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

Definition at line 718 of file CodeGenModule.h.

◆ setAtomicSetterHelperFnMap()

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

Definition at line 710 of file CodeGenModule.h.

◆ 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 2511 of file CodeGenModule.cpp.

References addUsedOrCompilerUsedGlobal(), clang::GlobalDecl::getDecl(), clang::Decl::hasAttr(), clang::SD_Static, clang::SD_Thread, and setGVProperties().

Referenced by emitConstructorDestructorAlias(), and TryEmitBaseDestructorAsAlias().

◆ setDLLImportDLLExport() [1/2]

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

◆ setDLLImportDLLExport() [2/2]

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

◆ setDSOLocal()

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

◆ setFunctionLinkage()

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

Definition at line 1301 of file CodeGenModule.h.

References getFunctionLinkage().

Referenced by codegenCXXStructor(), and setThunkProperties().

◆ setGlobalVisibility()

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

◆ setGVProperties() [1/2]

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

Definition at line 1688 of file CodeGenModule.cpp.

References setDLLImportDLLExport(), and setGVPropertiesAux().

◆ setGVProperties() [2/2]

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

◆ setGVPropertiesAux()

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

◆ SetInternalFunctionAttributes()

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

◆ setKCFIType()

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

Set type metadata to the given function.

Definition at line 2697 of file CodeGenModule.cpp.

References CreateKCFITypeId(), and clang::ValueDecl::getType().

◆ SetLLVMFunctionAttributes()

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

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

Definition at line 2081 of file CodeGenModule.cpp.

References ConstructAttributeList().

Referenced by getClangCallTerminateFn(), setBlockHelperAttributesVisibility(), and SetInternalFunctionAttributes().

◆ SetLLVMFunctionAttributesForDefinition()

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

◆ setLLVMFunctionFEnvAttributes()

void clang::CodeGen::CodeGenModule::setLLVMFunctionFEnvAttributes ( const FunctionDecl D,
llvm::Function *  F 
)

Set the LLVM function attributes that represent floating point environment.

◆ setStaticLocalDeclAddress()

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

Definition at line 684 of file CodeGenModule.h.

References clang::C.

Referenced by getOrCreateStaticVarDecl().

◆ setStaticLocalDeclGuardAddress()

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

Definition at line 696 of file CodeGenModule.h.

References clang::C.

◆ 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 1724 of file CodeGenModule.cpp.

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

Referenced by GetAddrOfGlobalTemporary(), GetOrCreateLLVMGlobal(), and getOrCreateStaticVarDecl().

◆ setTypeDescriptorInMap()

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

Definition at line 726 of file CodeGenModule.h.

References clang::C.

◆ shouldEmitRTTI()

bool clang::CodeGen::CodeGenModule::shouldEmitRTTI ( bool  ForEH = false)
inline

Definition at line 940 of file CodeGenModule.h.

References getLangOpts(), and getTriple().

Referenced by GetAddrOfRTTIDescriptor().

◆ shouldMapVisibilityToDLLExport()

bool clang::CodeGen::CodeGenModule::shouldMapVisibilityToDLLExport ( const NamedDecl D) const
inline

◆ shouldUseTBAA()

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

Definition at line 762 of file CodeGenModule.h.

◆ stopAutoInit()

bool CodeGenModule::stopAutoInit ( )

◆ supportsCOMDAT()

bool CodeGenModule::supportsCOMDAT ( ) const

◆ TryEmitBaseDestructorAsAlias()

bool CodeGenModule::TryEmitBaseDestructorAsAlias ( const CXXDestructorDecl D)

◆ UpdateCompletedType()

void CodeGenModule::UpdateCompletedType ( const TagDecl TD)

Member Data Documentation

◆ ByrefHelpersCache

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

Definition at line 1005 of file CodeGenModule.h.

Referenced by buildByrefHelpers().

◆ GlobalUniqueCount

int clang::CodeGen::CodeGenModule::GlobalUniqueCount

Definition at line 578 of file CodeGenModule.h.

◆ IsOSVersionAtLeastFn

llvm::FunctionCallee clang::CodeGen::CodeGenModule::IsOSVersionAtLeastFn = nullptr

Definition at line 670 of file CodeGenModule.h.

◆ IsPlatformVersionAtLeastFn

llvm::FunctionCallee clang::CodeGen::CodeGenModule::IsPlatformVersionAtLeastFn = nullptr

Definition at line 672 of file CodeGenModule.h.

Referenced by emitIsPlatformVersionAtLeast().


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