class CodeGenModule

Declaration

class CodeGenModule : public CodeGenTypeCache { /* full declaration omitted */ };

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:279

Inherits from: CodeGenTypeCache

Member Variables

private clang::ASTContext& Context
private const clang::LangOptions& LangOpts
private IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS
private const clang::HeaderSearchOptions& HeaderSearchOpts
private const clang::PreprocessorOptions& PreprocessorOpts
private const clang::CodeGenOptions& CodeGenOpts
private unsigned int NumAutoVarInit = 0
private llvm::Module& TheModule
private clang::DiagnosticsEngine& Diags
private const clang::TargetInfo& Target
private std::unique_ptr<CGCXXABI> ABI
private llvm::LLVMContext& VMContext
private std::string ModuleNameHash
private bool CXX20ModuleInits = false
private std::unique_ptr<CodeGenTBAA> TBAA
private std::unique_ptr<TargetCodeGenInfo> TheTargetCodeGenInfo
private clang::CodeGen::CodeGenTypes Types
private clang::CodeGen::CodeGenVTables VTables
Holds information about C++ vtables.
private std::unique_ptr<CGObjCRuntime> ObjCRuntime
private std::unique_ptr<CGOpenCLRuntime> OpenCLRuntime
private std::unique_ptr<CGOpenMPRuntime> OpenMPRuntime
private std::unique_ptr<CGCUDARuntime> CUDARuntime
private std::unique_ptr<CGHLSLRuntime> HLSLRuntime
private std::unique_ptr<CGDebugInfo> DebugInfo
private std::unique_ptr<ObjCEntrypoints> ObjCData
private llvm::MDNode* NoObjCARCExceptionsMetadata = nullptr
private std::unique_ptr<llvm::IndexedInstrProfReader> PGOReader
private clang::CodeGen::InstrProfStats PGOStats
private std::unique_ptr<llvm::SanitizerStatReport> SanStats
private llvm::SmallPtrSet<llvm::GlobalValue*, 10> WeakRefReferences
private llvm::DenseMap<StringRef, GlobalDecl> DeferredDecls
This contains all the decls which have definitions but/ which are deferred for emission and therefore should only be output if they are actually used. If a decl is in this, then it is known to have not been referenced yet.
private std::vector<GlobalDecl> DeferredDeclsToEmit
This is a list of deferred decls which we have seen that *are* actually referenced. These get code generated when the module is done.
private llvm::DenseMap<llvm::StringRef, GlobalDecl> EmittedDeferredDecls
Decls that were DeferredDecls and have now been emitted.
private std::vector<GlobalDecl> Aliases
List of alias we have emitted. Used to make sure that what they point to is defined once we get to the end of the of the translation unit.
private std::vector<GlobalDecl> MultiVersionFuncs
List of multiversion functions to be emitted. This list is processed in conjunction with other deferred symbols and is used to ensure that multiversion function resolvers and ifuncs are defined and emitted.
private clang::CodeGen::CodeGenModule::ReplacementsTy Replacements
private llvm::SmallVector<std::pair<llvm::GlobalValue*, llvm::Constant*>, 8> GlobalValReplacements
List of global values to be replaced with something else. Used when we want to replace a GlobalValue but can't identify it by its mangled name anymore (because the name is already taken).
private llvm::DenseMap<const VarDecl*, llvm::GlobalVariable*> InitializerConstants
Variables for which we've emitted globals containing their constant values along with the corresponding globals, for opportunistic reuse.
private llvm::DenseSet<GlobalDecl> DiagnosedConflictingDefinitions
Set of global decls for which we already diagnosed mangled name conflict. Required to not issue a warning (on a mangling conflict) multiple times for the same decl.
private std::vector<const CXXRecordDecl*> DeferredVTables
A queue of (optional) vtables to consider emitting.
private std::vector<const CXXRecordDecl*> OpportunisticVTables
A queue of (optional) vtables that may be emitted opportunistically.
private std::vector<llvm::WeakTrackingVH> LLVMUsed
List of global values which are required to be present in the object file; bitcast to i8*. This is used for forcing visibility of symbols which may otherwise be optimized out.
private std::vector<llvm::WeakTrackingVH> LLVMCompilerUsed
private clang::CodeGen::CodeGenModule::CtorList GlobalCtors
Store the list of global constructors and their respective priorities to be emitted when the translation unit is complete.
private clang::CodeGen::CodeGenModule::CtorList GlobalDtors
Store the list of global destructors and their respective priorities to be emitted when the translation unit is complete.
private llvm::MapVector<GlobalDecl, StringRef> MangledDeclNames
An ordered map of canonical GlobalDecls to their mangled names.
private llvm::StringMap<GlobalDecl, llvm::BumpPtrAllocator> Manglings
private std::vector<llvm::Constant*> Annotations
Global annotations.
private llvm::StringMap<llvm::Constant*> AnnotationStrings
Map used to get unique annotation strings.
private llvm::DenseMap<unsigned int, llvm::Constant*> AnnotationArgs
Used for uniquing of annotation arguments.
private llvm::StringMap<llvm::GlobalVariable*> CFConstantStringMap
private llvm::DenseMap<llvm::Constant*, llvm::GlobalVariable*> ConstantStringMap
private llvm::DenseMap<const UnnamedGlobalConstantDecl*, llvm::GlobalVariable*> UnnamedGlobalConstantDeclMap
private llvm::DenseMap<const Decl*, llvm::Constant*> StaticLocalDeclMap
private llvm::DenseMap<const Decl*, llvm::GlobalVariable*> StaticLocalDeclGuardMap
private llvm::DenseMap<const Expr*, llvm::Constant*> MaterializedGlobalTemporaryMap
private llvm::DenseMap<QualType, llvm::Constant*> AtomicSetterHelperFnMap
private llvm::DenseMap<QualType, llvm::Constant*> AtomicGetterHelperFnMap
private llvm::DenseMap<QualType, llvm::Constant*> TypeDescriptorMap
Map used to get unique type descriptor constants for sanitizers.
private clang::CodeGen::CodeGenModule::StaticExternCMap StaticExternCValues
private std::vector<const VarDecl*> CXXThreadLocals
thread_local variables defined or used in this TU.
private std::vector<llvm::Function*> CXXThreadLocalInits
thread_local variables with initializers that need to run before any thread_local variable in this TU is odr-used.
private std::vector<const VarDecl*> CXXThreadLocalInitVars
private std::vector<llvm::Function*> CXXGlobalInits
Global variables with initializers that need to run before main.
private llvm::DenseMap<const Decl*, unsigned int> DelayedCXXInitPosition
When a C++ decl with an initializer is deferred, null is appended to CXXGlobalInits, and the index of that null is placed here so that the initializer will be performed in the correct order. Once the decl is emitted, the index is replaced with ~0U to ensure that we don't re-emit the initializer.
private SmallVector< clang::CodeGen::CodeGenModule::GlobalInitData, 8> PrioritizedCXXGlobalInits
Global variables with initializers whose order of initialization is set by init_priority attribute.
private SmallVector<clang::CodeGen::CodeGenModule:: CXXGlobalDtorsOrStermFinalizer_t, 8> CXXGlobalDtorsOrStermFinalizers
private SmallVector<clang::CodeGen::CodeGenModule:: StermFinalizerData, 8> PrioritizedCXXStermFinalizers
Global variables with sterm finalizers whose order of initialization is set by init_priority attribute.
private llvm::SetVector<clang::Module*> ImportedModules
The complete set of modules that has been imported.
private llvm::SmallPtrSet<clang::Module*, 16> EmittedModuleInitializers
The set of modules for which the module initializers have been emitted.
private SmallVector<llvm::MDNode*, 16> LinkerOptionsMetadata
A vector of metadata strings for linker options.
private SmallVector<llvm::MDNode*, 16> ELFDependentLibraries
A vector of metadata strings for dependent libraries for ELF.
private llvm::WeakTrackingVH CFConstantStringClassRef
Cached reference to the class for constant strings. This value has type int * but is actually an Obj-C class pointer.
private clang::QualType ObjCFastEnumerationStateType
The type used to describe the state of a fast enumeration in Objective-C's for..in loop.
private llvm::DenseMap<const CompoundLiteralExpr*, llvm::GlobalVariable*> EmittedCompoundLiterals
Map used to be sure we don't emit the same CompoundLiteral twice.
private llvm::DenseMap<const BlockExpr*, llvm::Constant*> EmittedGlobalBlocks
Map of the global blocks we've emitted, so that we don't have to re-emit them if the constexpr evaluator gets aggressive.
private llvm::Constant* NSConcreteGlobalBlock = nullptr
@ {
private llvm::Constant* NSConcreteStackBlock = nullptr
private llvm::FunctionCallee BlockObjectAssign = nullptr
private llvm::FunctionCallee BlockObjectDispose = nullptr
private llvm::Type* BlockDescriptorType = nullptr
private llvm::Type* GenericBlockLiteralType = nullptr
private struct(unnamed struct at / home / hdoc / tmp / llvm - project / clang / lib / CodeGen / CodeGenModule.h : 561 : 3) Block
private clang::GlobalDecl initializedGlobalDecl
private llvm::Function* LifetimeStartFn = nullptr
void @llvm.lifetime.start(i64 %size, i8* nocapture <ptr >)
private llvm::Function* LifetimeEndFn = nullptr
void @llvm.lifetime.end(i64 %size, i8* nocapture <ptr >)
private std::unique_ptr<SanitizerMetadata> SanitizerMD
private llvm::MapVector<const Decl*, bool> DeferredEmptyCoverageMappingDecls
private std::unique_ptr<CoverageMappingModuleGen> CoverageMapping
private clang::CodeGen::CodeGenModule::MetadataTypeMap MetadataIdMap
private clang::CodeGen::CodeGenModule::MetadataTypeMap VirtualMetadataIdMap
private clang::CodeGen::CodeGenModule::MetadataTypeMap GeneralizedMetadataIdMap
private llvm::DenseMap<const llvm::Constant*, llvm::GlobalVariable*> RTTIProxyMap
public llvm::FunctionCallee IsOSVersionAtLeastFn = nullptr
public llvm::FunctionCallee IsPlatformVersionAtLeastFn = nullptr
public llvm::FoldingSet<BlockByrefHelpers> ByrefHelpersCache
private std::map<int, llvm::TinyPtrVector<llvm::Function*>> DtorsUsingAtExit

Inherited from CodeGenTypeCache:

public VoidTy
public Int8Ty
public Int16Ty
public Int32Ty
public Int64Ty
public HalfTy
public BFloatTy
public FloatTy
public DoubleTy
public IntTy
public CharTy
public
public
public
public
public
public
public PointerWidthInBits
public
public
public ASTAllocaAddressSpace
public RuntimeCC

Method Overview

Inherited from CodeGenTypeCache:

Methods

void AddCXXDtorEntry(llvm::FunctionCallee DtorFn,
                     llvm::Constant* Object)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1118

Parameters

llvm::FunctionCallee DtorFn
llvm::Constant* Object

void AddCXXPrioritizedStermFinalizerEntry(
    llvm::Function* StermFinalizer,
    int Priority)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1135

Parameters

llvm::Function* StermFinalizer
int Priority

void AddCXXStermFinalizerEntry(
    llvm::FunctionCallee DtorFn)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1124

Parameters

llvm::FunctionCallee DtorFn

void AddCXXStermFinalizerToGlobalDtor(
    llvm::Function* StermFinalizer,
    int Priority)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1130

Parameters

llvm::Function* StermFinalizer
int Priority

void AddDeferredUnusedCoverageMapping(
    clang::Decl* D)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1086

Parameters

clang::Decl* D

void AddDependentLib(llvm::StringRef Lib)

Description

Appends a dependent lib to the appropriate metadata value.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1284

Parameters

llvm::StringRef Lib

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

Description

Appends a detect mismatch command to the linker options.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1281

Parameters

llvm::StringRef Name
llvm::StringRef Value

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

Description

Add global annotations that are set on D, for the global GV. Those annotations are emitted during finalization of the LLVM code.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1337

Parameters

const clang::ValueDecl* D
llvm::GlobalValue* GV

void AddGlobalCtor(
    llvm::Function* Ctor,
    int Priority = 65535,
    llvm::Constant* AssociatedData = nullptr)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1603

Parameters

llvm::Function* Ctor
int Priority = 65535
llvm::Constant* AssociatedData = nullptr

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1605

Parameters

llvm::Function* Dtor
int Priority = 65535
bool IsDtorAttrFunc = false

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

Description

Create and attach type metadata for the given vtable.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1465

Parameters

llvm::GlobalVariable* VTable
clang::CharUnits Offset
const clang::CXXRecordDecl* RD

bool AlwaysHasLTOVisibilityPublic(
    const clang::CXXRecordDecl* RD)

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1419

Parameters

const clang::CXXRecordDecl* RD

void AppendLinkerOptions(llvm::StringRef Opts)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1278

Parameters

llvm::StringRef Opts

bool CheckAndReplaceExternCIFuncs(
    llvm::GlobalValue* Elem,
    llvm::GlobalValue* CppFunc)

Description

Helper function for EmitStaticExternCAliases() to redirect ifuncs that have a resolver name that matches 'Elem' to instead resolve to the name of 'CppFunc'. This redirection is necessary in cases where 'Elem' has a name that will be emitted as an alias of the name bound to 'CppFunc'; ifuncs may not reference aliases. Redirection is only performed if 'Elem' is only used by ifuncs in which case, 'Elem' is destroyed. 'true' is returned if redirection is successful, and 'false' is returned otherwise.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1667

Parameters

llvm::GlobalValue* Elem
llvm::GlobalValue* CppFunc

void ClearUnusedCoverageMapping(
    const clang::Decl* D)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1090

Parameters

const clang::Decl* D

CodeGenModule(
    const clang::CodeGen::CodeGenModule&)

Declared at: clang/lib/CodeGen/CodeGenModule.h:280

Parameters

const clang::CodeGen::CodeGenModule&

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:592

Parameters

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

void ConstructAttributeList(
    llvm::StringRef Name,
    const clang::CodeGen::CGFunctionInfo& Info,
    clang::CodeGen::CGCalleeInfo CalleeInfo,
    llvm::AttributeList& Attrs,
    unsigned int& CallingConv,
    bool AttrOnCallSite,
    bool IsThunk)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1237

Parameters

llvm::StringRef Name
- The function name.
const clang::CodeGen::CGFunctionInfo& Info
- The function type information.
clang::CodeGen::CGCalleeInfo 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.
llvm::AttributeList& Attrs
[out] - On return, the attribute list to use.
unsigned int& CallingConv
[out] - On return, the LLVM calling convention to use.
bool AttrOnCallSite
bool IsThunk

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

Description

Generate a cross-DSO type identifier for MD.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1437

Parameters

llvm::Metadata* MD

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

Description

Create and attach type metadata to the given function.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1454

Parameters

const clang::FunctionDecl* FD
llvm::Function* F

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:872

Parameters

llvm::FunctionType* ty
const llvm::Twine& name
const clang::CodeGen::CGFunctionInfo& FI
clang::SourceLocation Loc = clang::SourceLocation()
bool TLS = false
llvm::GlobalVariable::LinkageTypes Linkage = llvm::GlobalVariable::InternalLinkage

llvm::Metadata* CreateMetadataIdentifierForType(
    clang::QualType T)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1442

Parameters

clang::QualType T

llvm::Metadata*
CreateMetadataIdentifierForVirtualMemPtrType(
    clang::QualType T)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1446

Parameters

clang::QualType T

llvm::Metadata*
CreateMetadataIdentifierGeneralized(
    clang::QualType T)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1451

Parameters

clang::QualType T

llvm::Metadata* CreateMetadataIdentifierImpl(
    clang::QualType T,
    clang::CodeGen::CodeGenModule::
        MetadataTypeMap& Map,
    llvm::StringRef Suffix)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1714

Parameters

clang::QualType T
clang::CodeGen::CodeGenModule::MetadataTypeMap& Map
llvm::StringRef Suffix

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:868

Parameters

llvm::StringRef Name
llvm::Type* Ty
llvm::GlobalValue::LinkageTypes Linkage
unsigned int Alignment

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

Description

Create or return a runtime function declaration with the specified type and name. If \p AssumeConvergent is true, the call will have the convergent attribute added.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1147

Parameters

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

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1152

Parameters

llvm::Type* Ty
llvm::StringRef Name

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

Description

Adds !invariant.barrier !tag to instruction

Declared at: clang/lib/CodeGen/CodeGenModule.h:815

Parameters

llvm::Instruction* I
const clang::CXXRecordDecl* RD

void DecorateInstructionWithTBAA(
    llvm::Instruction* Inst,
    clang::CodeGen::TBAAAccessInfo TBAAInfo)

Description

DecorateInstructionWithTBAA - Decorate the instruction with a TBAA tag.

Declared at: clang/lib/CodeGen/CodeGenModule.h:811

Parameters

llvm::Instruction* Inst
clang::CodeGen::TBAAAccessInfo TBAAInfo

void EmitAliasDefinition(clang::GlobalDecl GD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1570

Parameters

clang::GlobalDecl GD

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1331

Parameters

llvm::GlobalValue* GV
const clang::AnnotateAttr* AA
clang::SourceLocation L

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

Description

Emit additional args of the annotation.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1322

Parameters

const clang::AnnotateAttr* Attr

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

Description

Emit the annotation line number.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1319

Parameters

clang::SourceLocation L

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

Description

Emit an annotation string.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1313

Parameters

llvm::StringRef Str

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

Description

Emit the annotation's translation unit.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1316

Parameters

clang::SourceLocation Loc

void EmitBackendOptionsMetadata(
    const clang::CodeGenOptions CodeGenOpts)

Description

Emit the module flag metadata used to pass options controlling the the backend to LLVM.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1684

Parameters

const clang::CodeGenOptions CodeGenOpts

void EmitCXXGlobalCleanUpFunc()

Description

Emit the function that performs cleanup associated with C++ globals.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1591

void EmitCXXGlobalInitFunc()

Description

Emit the function that initializes C++ globals.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1588

void EmitCXXGlobalVarDeclInitFunc(
    const clang::VarDecl* D,
    llvm::GlobalVariable* Addr,
    bool PerformInit)

Description

Emit the function that initializes the specified global (if PerformInit is true) and registers its destructor.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1595

Parameters

const clang::VarDecl* D
llvm::GlobalVariable* Addr
bool PerformInit

void EmitCXXModuleInitFunc(clang::Module* Primary)

Description

Emit the function that initializes global variables for a C++ Module.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1585

Parameters

clang::Module* Primary

void EmitCXXThreadLocalInitFunc()

Description

Emit the function that initializes C++ thread_local variables.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1582

void EmitCommandLineMetadata()

Description

Emit the Clang commandline as llvm.commandline metadata.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1680

void EmitCoverageFile()

Description

Emit the llvm.gcov metadata used to tell LLVM where to emit the .gcno and .gcda files in a way that persists in .bc files.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1691

void EmitCtorList(
    clang::CodeGen::CodeGenModule::CtorList& Fns,
    const char* GlobalName)

Description

EmitCtorList - Generates a global array of functions and priorities using the given list and name. This array will have appending linkage and is suitable for use as a LLVM constructor or destructor array. Clears Fns.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1611

Parameters

clang::CodeGen::CodeGenModule::CtorList& Fns
const char* GlobalName

void EmitDeclContext(const clang::DeclContext* DC)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1578

Parameters

const clang::DeclContext* DC

void EmitDeclMetadata()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1674

void EmitDeferred()

Description

Emit any needed decls for which code generation was deferred.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1614

void EmitDeferredUnusedCoverageMappings()

Description

Emit all the deferred coverage mappings for the uninstrumented functions.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1094

void EmitDeferredVTables()

Description

Emit any vtables which we deferred and still have a use for.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1645

void EmitExplicitCastExprType(
    const clang::ExplicitCastExpr* E,
    clang::CodeGen::CodeGenFunction* CGF =
        nullptr)

Description

Emit type info if type of an expression is a variably modified type. Also emit proper debug info for cast types.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1175

Parameters

const clang::ExplicitCastExpr* E
clang::CodeGen::CodeGenFunction* CGF = nullptr

void EmitExternalDeclaration(
    const clang::VarDecl* D)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1271

Parameters

const clang::VarDecl* D

void EmitExternalVarDeclaration(
    const clang::VarDecl* D)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1569

Parameters

const clang::VarDecl* D

void EmitGlobal(clang::GlobalDecl D)

Description

Emit code for a single global function or var decl. Forward declarations are emitted lazily.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1372

Parameters

clang::GlobalDecl D

void EmitGlobalAnnotations()

Description

Emit all the global annotations.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1310

void EmitGlobalDefinition(
    clang::GlobalDecl D,
    llvm::GlobalValue* GV = nullptr)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1563

Parameters

clang::GlobalDecl D
llvm::GlobalValue* GV = nullptr

void EmitGlobalFunctionDefinition(
    clang::GlobalDecl GD,
    llvm::GlobalValue* GV)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1565

Parameters

clang::GlobalDecl GD
llvm::GlobalValue* GV

void EmitGlobalVarDefinition(
    const clang::VarDecl* D,
    bool IsTentative = false)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1568

Parameters

const clang::VarDecl* D
bool IsTentative = false

void EmitLinkageSpec(
    const clang::LinkageSpecDecl* D)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1579

Parameters

const clang::LinkageSpecDecl* D

void EmitMainVoidAlias()

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1097

void EmitModuleInitializers(
    clang::Module* Primary)

Description

For C++20 Itanium ABI, emit the initializers for the module.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1655

Parameters

clang::Module* Primary

void EmitModuleLinkOptions()

Description

Emit the link options introduced by imported modules.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1658

void EmitMultiVersionFunctionDefinition(
    clang::GlobalDecl GD,
    llvm::GlobalValue* GV)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1566

Parameters

clang::GlobalDecl GD
llvm::GlobalValue* GV

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

Description

Return the result of value-initializing the given type, i.e. a null expression of the given type. This is usually, but not always, an LLVM null constant.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1181

Parameters

clang::QualType T

llvm::Constant* EmitNullConstantForBase(
    const clang::CXXRecordDecl* Record)

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1185

Parameters

const clang::CXXRecordDecl* Record

void EmitOMPAllocateDecl(
    const clang::OMPAllocateDecl* D)

Description

Emit a code for the allocate directive.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1406

Parameters

const clang::OMPAllocateDecl* D
The allocate declaration

void EmitOMPDeclareMapper(
    const clang::OMPDeclareMapperDecl* D,
    clang::CodeGen::CodeGenFunction* CGF =
        nullptr)

Description

Emit a code for declare mapper construct.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1397

Parameters

const clang::OMPDeclareMapperDecl* D
clang::CodeGen::CodeGenFunction* CGF = nullptr

void EmitOMPDeclareReduction(
    const clang::OMPDeclareReductionDecl* D,
    clang::CodeGen::CodeGenFunction* CGF =
        nullptr)

Description

Emit a code for declare reduction construct.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1393

Parameters

const clang::OMPDeclareReductionDecl* D
clang::CodeGen::CodeGenFunction* CGF = nullptr

void EmitOMPRequiresDecl(
    const clang::OMPRequiresDecl* D)

Description

Emit a code for requires directive.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1402

Parameters

const clang::OMPRequiresDecl* D
Requires declaration

void EmitOMPThreadPrivateDecl(
    const clang::OMPThreadPrivateDecl* D)

Description

Emit a code for threadprivate directive.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1390

Parameters

const clang::OMPThreadPrivateDecl* D
Threadprivate declaration.

void EmitObjCIvarInitializations(
    clang::ObjCImplementationDecl* D)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1574

Parameters

clang::ObjCImplementationDecl* D

void EmitObjCPropertyImplementations(
    const clang::ObjCImplementationDecl* D)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1573

Parameters

const clang::ObjCImplementationDecl* D

void EmitOpenCLMetadata()

Description

Emits OpenCL specific Metadata e.g. OpenCL version.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1687

void EmitPointerToInitFunc(
    const clang::VarDecl* VD,
    llvm::GlobalVariable* Addr,
    llvm::Function* InitFunc,
    clang::InitSegAttr* ISA)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1599

Parameters

const clang::VarDecl* VD
llvm::GlobalVariable* Addr
llvm::Function* InitFunc
clang::InitSegAttr* ISA

void EmitStaticExternCAliases()

Description

Emit aliases for internal-linkage declarations inside "C" language linkage specifications, giving them the "expected" name where possible.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1672

void EmitTentativeDefinition(
    const clang::VarDecl* D)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1269

Parameters

const clang::VarDecl* D

void EmitTopLevelDecl(clang::Decl* D)

Description

Emit code for a single top level declaration.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1082

Parameters

clang::Decl* D

void EmitVTable(clang::CXXRecordDecl* Class)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1273

Parameters

clang::CXXRecordDecl* Class

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1432

Parameters

const clang::CXXRecordDecl* RD
llvm::GlobalVariable* VTable
const clang::VTableLayout& VTLayout

void EmitVTablesOpportunistically()

Description

Try to emit external vtables as available_externally if they have emitted all inlined virtual functions. It runs after EmitDeferred() and therefore is not allowed to create new references to things that need to be emitted lazily.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1620

void EmitVersionIdentMetadata()

Description

Emit the Clang version as llvm.ident metadata.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1677

void Error(clang::SourceLocation loc,
           llvm::StringRef error)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1188

Parameters

clang::SourceLocation loc
llvm::StringRef error

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1191

Parameters

const clang::Stmt* S
const char* Type

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1194

Parameters

const clang::Decl* D
const char* Type

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1497

Parameters

llvm::Function* FN
is a pointer to IR function being generated.
const clang::FunctionDecl* FD = nullptr
is a pointer to function declaration if any.
clang::CodeGen::CodeGenFunction* CGF = nullptr
is a pointer to CodeGenFunction that generates this function.

clang::CodeGen::ConstantAddress
GetAddrOfConstantCFString(
    const clang::StringLiteral* Literal)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1001

Parameters

const clang::StringLiteral* Literal

clang::CodeGen::ConstantAddress
GetAddrOfConstantCString(
    const std::string& Str,
    const char* GlobalName = nullptr)

Description

Returns a pointer to a character array containing the literal and a terminating ' \ 0' character. The result has pointer to array type.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1026

Parameters

const std::string& Str
const char* GlobalName = nullptr
If provided, the name to use for the global (if one is created).

clang::CodeGen::ConstantAddress
GetAddrOfConstantCompoundLiteral(
    const clang::CompoundLiteralExpr* E)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1031

Parameters

const clang::CompoundLiteralExpr* E

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

Description

Return a pointer to a constant NSString object for the given string. Or a user defined String object as defined via -fconstant-string-class=class_name option.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1006

Parameters

const clang::StringLiteral* Literal

clang::CodeGen::ConstantAddress
GetAddrOfConstantStringFromLiteral(
    const clang::StringLiteral* S,
    llvm::StringRef Name = ".str")

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1013

Parameters

const clang::StringLiteral* S
llvm::StringRef Name = ".str"

clang::CodeGen::ConstantAddress
GetAddrOfConstantStringFromObjCEncode(
    const clang::ObjCEncodeExpr*)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1018

Parameters

const clang::ObjCEncodeExpr*

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:908

Parameters

clang::GlobalDecl GD
llvm::Type* Ty = nullptr
bool ForVTable = false
bool DontDefer = false
clang::CodeGen::ForDefinition_t IsForDefinition = NotForDefinition

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:859

Parameters

clang::GlobalDecl GD
clang::CodeGen::ForDefinition_t IsForDefinition = NotForDefinition

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

Description

Gets the address of a block which requires no captures.

Declared at: clang/lib/CodeGen/CodeGenModule.h:988

Parameters

const clang::BlockExpr* BE
llvm::StringRef Name

clang::CodeGen::ConstantAddress
GetAddrOfGlobalTemporary(
    const clang::MaterializeTemporaryExpr* E,
    const clang::Expr* Inner)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1045

Parameters

const clang::MaterializeTemporaryExpr* E
const clang::Expr* Inner

llvm::Constant* GetAddrOfGlobalVar(
    const clang::VarDecl* D,
    llvm::Type* Ty = nullptr,
    clang::CodeGen::ForDefinition_t
        IsForDefinition = NotForDefinition)

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:901

Parameters

const clang::VarDecl* D
llvm::Type* Ty = nullptr
clang::CodeGen::ForDefinition_t IsForDefinition = NotForDefinition

clang::CodeGen::ConstantAddress
GetAddrOfMSGuidDecl(const clang::MSGuidDecl* GD)

Description

Get the address of a GUID.

Declared at: clang/lib/CodeGen/CodeGenModule.h:921

Parameters

const clang::MSGuidDecl* GD

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:918

Parameters

clang::QualType Ty
bool ForEH = false

clang::CodeGen::ConstantAddress
GetAddrOfTemplateParamObject(
    const clang::TemplateParamObjectDecl* TPO)

Description

Get the address of a template parameter object.

Declared at: clang/lib/CodeGen/CodeGenModule.h:929

Parameters

const clang::TemplateParamObjectDecl* TPO

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:932

Parameters

llvm::StringRef Name
llvm::Type* FnTy
clang::GlobalDecl GD

clang::CodeGen::ConstantAddress
GetAddrOfUnnamedGlobalConstantDecl(
    const clang::UnnamedGlobalConstantDecl* GCD)

Description

Get the address of a UnnamedGlobalConstant

Declared at: clang/lib/CodeGen/CodeGenModule.h:925

Parameters

const clang::UnnamedGlobalConstantDecl* GCD

bool GetCPUAndFeaturesAttributes(
    clang::GlobalDecl GD,
    llvm::AttrBuilder& AttrBuilder)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1555

Parameters

clang::GlobalDecl GD
llvm::AttrBuilder& AttrBuilder

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

Description

Return a constant array for the given string.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1009

Parameters

const clang::StringLiteral* E

llvm::GlobalVariable::ThreadLocalMode
GetDefaultLLVMTLSModel() const

Description

Get LLVM TLS mode from CodeGenOptions.

Declared at: clang/lib/CodeGen/CodeGenModule.h:848

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:915

Parameters

const clang::ValueDecl* Decl

clang::LangAS GetGlobalConstantAddressSpace()
    const

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:893

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1376

Parameters

llvm::StringRef Ref

clang::LangAS GetGlobalVarAddressSpace(
    const clang::VarDecl* D)

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:886

Parameters

const clang::VarDecl* D

static llvm::GlobalValue::VisibilityTypes
GetLLVMVisibility(clang::Visibility V)

Declared at: clang/lib/CodeGen/CodeGenModule.h:850

Parameters

clang::Visibility V

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

Description

Returns the offset from a derived class to a class. Returns null if the offset is 0.

Declared at: clang/lib/CodeGen/CodeGenModule.h:972

Parameters

const clang::CXXRecordDecl* ClassDecl
CastExpr::path_const_iterator PathBegin
CastExpr::path_const_iterator PathEnd

llvm::Constant* GetOrCreateLLVMFunction(
    llvm::StringRef MangledName,
    llvm::Type* Ty,
    clang::GlobalDecl D,
    bool ForVTable,
    bool DontDefer = false,
    bool IsThunk = false,
    llvm::AttributeList ExtraAttrs =
        llvm::AttributeList(),
    clang::CodeGen::ForDefinition_t
        IsForDefinition = NotForDefinition)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1529

Parameters

llvm::StringRef MangledName
llvm::Type* Ty
clang::GlobalDecl D
bool ForVTable
bool DontDefer = false
bool IsThunk = false
llvm::AttributeList ExtraAttrs = llvm::AttributeList()
clang::CodeGen::ForDefinition_t IsForDefinition = NotForDefinition

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1551

Parameters

llvm::StringRef MangledName
llvm::Type* Ty
clang::LangAS AddrSpace
const clang::VarDecl* D
clang::CodeGen::ForDefinition_t IsForDefinition = NotForDefinition

llvm::Constant* GetOrCreateMultiVersionResolver(
    clang::GlobalDecl GD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1540

Parameters

clang::GlobalDecl GD

llvm::GlobalVariable*
GetOrCreateRTTIProxyGlobalVariable(
    llvm::Constant* Addr)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1477

Parameters

llvm::Constant* Addr

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1298

Parameters

llvm::Type* Ty

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1428

Parameters

const clang::CXXRecordDecl* RD
llvm::DenseSet<const CXXRecordDecl*>& Visited

clang::CodeGen::ConstantAddress
GetWeakRefReference(const clang::ValueDecl* VD)

Description

Get a reference to the target of VD.

Declared at: clang/lib/CodeGen/CodeGenModule.h:936

Parameters

const clang::ValueDecl* VD

void HandleCXXStaticMemberVarInstantiation(
    clang::VarDecl* VD)

Description

Tell the consumer that this variable has been instantiated.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1100

Parameters

clang::VarDecl* VD

bool HasHiddenLTOVisibility(
    const clang::CXXRecordDecl* RD)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1414

Parameters

const clang::CXXRecordDecl* RD

bool MayBeEmittedEagerly(
    const clang::ValueDecl* D)

Description

Determine whether the definition can be emitted eagerly, or should be delayed until the end of the translation unit. This is relevant for definitions whose linkage can change, e.g. implicit function instantions which may later be explicitly instantiated.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1701

Parameters

const clang::ValueDecl* D

bool MayDropFunctionReturn(
    const clang::ASTContext& Context,
    clang::QualType ReturnType)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1459

Parameters

const clang::ASTContext& Context
clang::QualType ReturnType

template <typename SomeDecl>
void MaybeHandleStaticInExternC(
    const SomeDecl* D,
    llvm::GlobalValue* GV)

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1106

Templates

SomeDecl

Parameters

const SomeDecl* D
llvm::GlobalValue* GV

bool MustBeEmitted(const clang::ValueDecl* D)

Description

Determine whether the definition must be emitted; if this returns \c false, the definition can be emitted lazily if it's used.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1695

Parameters

const clang::ValueDecl* D

bool NeedAllVtablesTypeId() const

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1462

void RefreshTypeCacheForClass(
    const clang::CXXRecordDecl* Class)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1275

Parameters

const clang::CXXRecordDecl* Class

void Release()

Description

Finalize LLVM code generation.

Declared at: clang/lib/CodeGen/CodeGenModule.h:604

bool ReturnSlotInterferesWithArgs(
    const clang::CodeGen::CGFunctionInfo& FI)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1219

Parameters

const clang::CodeGen::CGFunctionInfo& FI

bool ReturnTypeUsesFP2Ret(
    clang::QualType ResultType)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1225

Parameters

clang::QualType ResultType

bool ReturnTypeUsesFPRet(
    clang::QualType ResultType)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1222

Parameters

clang::QualType ResultType

bool ReturnTypeUsesSRet(
    const clang::CodeGen::CGFunctionInfo& FI)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1215

Parameters

const clang::CodeGen::CGFunctionInfo& FI

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1382

Parameters

clang::GlobalDecl GD
llvm::GlobalValue* GV

void SetFunctionAttributes(
    clang::GlobalDecl GD,
    llvm::Function* F,
    bool IsIncompleteFunction,
    bool IsThunk)

Description

Set function attributes for a function declaration.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1560

Parameters

clang::GlobalDecl GD
llvm::Function* F
bool IsIncompleteFunction
bool IsThunk

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

Description

Set the attributes on the LLVM function for the given decl and function info. This applies attributes necessary for handling the ABI as well as user specified attributes like section.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1199

Parameters

clang::GlobalDecl GD
llvm::Function* F
const clang::CodeGen::CGFunctionInfo& FI

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1203

Parameters

clang::GlobalDecl GD
const clang::CodeGen::CGFunctionInfo& Info
llvm::Function* F
bool IsThunk

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1208

Parameters

const clang::Decl* D
llvm::Function* F

void SimplifyPersonality()

Description

Check whether we can use a "simpler", more core exceptions personality function.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1705

bool TryEmitBaseDestructorAsAlias(
    const clang::CXXDestructorDecl* D)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1374

Parameters

const clang::CXXDestructorDecl* D

void UpdateCompletedType(const clang::TagDecl* TD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1169

Parameters

const clang::TagDecl* TD

void UpdateMultiVersionNames(
    clang::GlobalDecl GD,
    const clang::FunctionDecl* FD,
    llvm::StringRef& CurName)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1547

Parameters

clang::GlobalDecl GD
const clang::FunctionDecl* FD
llvm::StringRef& CurName

void addCompilerUsedGlobal(llvm::GlobalValue* GV)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1112

Parameters

llvm::GlobalValue* GV

void addDefaultFunctionDefinitionAttributes(
    llvm::Function& F)

Description

Adds attributes to F according to our CodeGenOptions and LangOptions, as though we had emitted it ourselves. We remove any attributes on F that conflict with the attributes we add here. This is useful for adding attrs to bitcode modules that you want to link with but don't control, such as CUDA's libdevice. When linking with such a bitcode library, you might want to set e.g. its functions' "unsafe-fp-math" attribute to match the attr of the functions you're codegen'ing. Otherwise, LLVM will interpret the bitcode module's lack of unsafe-fp-math attrs as tantamount to unsafe-fp-math=false, and then LLVM will propagate unsafe-fp-math=false up to every transitive caller of a function in the bitcode library! With the exception of fast-math attrs, this will only make the attributes on the function more conservative. But it's unsafe to call this on a function which relies on particular fast-math attributes for correctness. It's up to you to ensure that this is safe.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1259

Parameters

llvm::Function& F

void addDefaultFunctionDefinitionAttributes(
    llvm::AttrBuilder& attrs)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1263

Parameters

llvm::AttrBuilder& attrs

void addDeferredDeclToEmit(clang::GlobalDecl GD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:350

Parameters

clang::GlobalDecl GD

void addDeferredVTable(
    const clang::CXXRecordDecl* RD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1366

Parameters

const clang::CXXRecordDecl* RD

void addEmittedDeferredDecl(clang::GlobalDecl GD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:358

Parameters

clang::GlobalDecl GD

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1386

Parameters

llvm::GlobalValue* GV
llvm::Constant* C

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1384

Parameters

llvm::StringRef Name
llvm::Constant* C

void addUsedGlobal(llvm::GlobalValue* GV)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1109

Parameters

llvm::GlobalValue* GV

void addUsedOrCompilerUsedGlobal(
    llvm::GlobalValue* GV)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1115

Parameters

llvm::GlobalValue* GV

void applyGlobalValReplacements()

Description

Call replaceAllUsesWith on all pairs in GlobalValReplacements.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1626

void applyReplacements()

Description

Call replaceAllUsesWith on all pairs in Replacements.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1623

void checkAliases()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1628

void clear()

Declared at: clang/lib/CodeGen/CodeGenModule.h:601

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1055

Parameters

clang::GlobalDecl GD

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:965

Parameters

const clang::CXXRecordDecl* DerivedClass
CastExpr::path_const_iterator Start
CastExpr::path_const_iterator End

void createCUDARuntime()

Declared at: clang/lib/CodeGen/CodeGenModule.h:535

void createHLSLRuntime()

Declared at: clang/lib/CodeGen/CodeGenModule.h:536

void createObjCRuntime()

Description

Lazily create the Objective-C runtime

Declared at: clang/lib/CodeGen/CodeGenModule.h:531

llvm::Value* createOpenCLIntToSamplerConversion(
    const clang::Expr* E,
    clang::CodeGen::CodeGenFunction& CGF)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1485

Parameters

const clang::Expr* E
clang::CodeGen::CodeGenFunction& CGF

void createOpenCLRuntime()

Declared at: clang/lib/CodeGen/CodeGenModule.h:533

void createOpenMPRuntime()

Declared at: clang/lib/CodeGen/CodeGenModule.h:534

clang::CodeGen::Address createUnnamedGlobalFrom(
    const clang::VarDecl& D,
    llvm::Constant* Constant,
    clang::CharUnits Align)

Declared at: clang/lib/CodeGen/CodeGenModule.h:682

Parameters

const clang::VarDecl& D
llvm::Constant* Constant
clang::CharUnits Align

void emitAtAvailableLinkGuard()

Description

Emit a dummy function that reference a CoreFoundation symbol when@availableis used on Darwin.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1649

void emitCPUDispatchDefinition(
    clang::GlobalDecl GD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1572

Parameters

clang::GlobalDecl GD

void emitIFuncDefinition(clang::GlobalDecl GD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1571

Parameters

clang::GlobalDecl GD

void emitLLVMUsed()

Description

Emit the llvm.used and llvm.compiler.used metadata.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1652

void emitMultiVersionFunctions()

Description

Emit deferred multiversion function resolvers and associated variants.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1642

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1069

Parameters

clang::GlobalDecl GD
const clang::CodeGen::CGFunctionInfo* FnInfo = nullptr
llvm::FunctionType* FnType = nullptr
bool DontDefer = false
clang::CodeGen::ForDefinition_t IsForDefinition = NotForDefinition

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1059

Parameters

clang::GlobalDecl GD
const clang::CodeGen::CGFunctionInfo* FnInfo = nullptr
llvm::FunctionType* FnType = nullptr
bool DontDefer = false
clang::CodeGen::ForDefinition_t IsForDefinition = NotForDefinition

llvm::GlobalVariable*
getAddrOfConstantCompoundLiteralIfEmitted(
    const clang::CompoundLiteralExpr* E)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1036

Parameters

const clang::CompoundLiteralExpr* E

llvm::Constant* getAddrOfGlobalBlockIfEmitted(
    const clang::BlockExpr* BE)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:992

Parameters

const clang::BlockExpr* BE

llvm::Constant* getAtomicGetterHelperFnMap(
    clang::QualType Ty)

Declared at: clang/lib/CodeGen/CodeGenModule.h:696

Parameters

clang::QualType Ty

llvm::Constant* getAtomicSetterHelperFnMap(
    clang::QualType Ty)

Declared at: clang/lib/CodeGen/CodeGenModule.h:688

Parameters

clang::QualType Ty

llvm::Type* getBlockDescriptorType()

Description

Fetches the type of a generic block descriptor.

Declared at: clang/lib/CodeGen/CodeGenModule.h:982

llvm::StringRef getBlockMangledName(
    clang::GlobalDecl GD,
    const clang::BlockDecl* BD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1266

Parameters

clang::GlobalDecl GD
const clang::BlockDecl* BD

llvm::FunctionCallee getBlockObjectAssign()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1160

llvm::FunctionCallee getBlockObjectDispose()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1161

llvm::Constant* getBuiltinLibFunction(
    const clang::FunctionDecl* FD,
    unsigned int BuiltinID)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1076

Parameters

const clang::FunctionDecl* FD
unsigned int BuiltinID

clang::CodeGen::CGCUDARuntime& getCUDARuntime()

Description

Return a reference to the configured CUDA runtime.

Declared at: clang/lib/CodeGen/CodeGenModule.h:633

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:739

clang::CharUnits getClassPointerAlignment(
    const clang::CXXRecordDecl* CD)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:939

Parameters

const clang::CXXRecordDecl* CD

const clang::CodeGenOptions& getCodeGenOpts()
    const

Declared at: clang/lib/CodeGen/CodeGenModule.h:728

clang::ASTContext& getContext() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:719

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:658

const llvm::DataLayout& getDataLayout() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:731

void getDefaultFunctionAttributes(
    llvm::StringRef Name,
    bool HasOptnone,
    bool AttrOnCallSite,
    llvm::AttrBuilder& FuncAttrs)

Description

Helper function for ConstructAttributeList and addDefaultFunctionDefinitionAttributes. Builds a set of function attributes to add to a function with the given properties.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1710

Parameters

llvm::StringRef Name
bool HasOptnone
bool AttrOnCallSite
llvm::AttrBuilder& FuncAttrs

clang::DiagnosticsEngine& getDiags() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:730

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:960

Parameters

clang::CharUnits ActualAlign
const clang::CXXRecordDecl* Class
clang::CharUnits ExpectedTargetAlign

bool getExpressionLocationsEnabled() const

Description

Return true if we should emit location information for expressions.

Declared at: clang/lib/CodeGen/CodeGenModule.h:607

const IntrusiveRefCntPtr<llvm::vfs::FileSystem>&
getFileSystem() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:721

llvm::GlobalVariable::LinkageTypes
getFunctionLinkage(clang::GlobalDecl GD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1287

Parameters

clang::GlobalDecl GD

llvm::Type* getGenericBlockLiteralType()

Description

The type of a generic block literal.

Declared at: clang/lib/CodeGen/CodeGenModule.h:985

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:758

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:759

clang::CodeGen::CGHLSLRuntime& getHLSLRuntime()

Description

Return a reference to the configured HLSL runtime.

Declared at: clang/lib/CodeGen/CodeGenModule.h:639

const clang::HeaderSearchOptions&
getHeaderSearchOpts() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:724

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1079

Parameters

unsigned int IID
ArrayRef<llvm::Type*> Tys = None

clang::ItaniumVTableContext&
getItaniumVTableContext()

Declared at: clang/lib/CodeGen/CodeGenModule.h:750

llvm::LLVMContext& getLLVMContext()

Declared at: clang/lib/CodeGen/CodeGenModule.h:740

llvm::Function* getLLVMLifetimeEndFn()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1166

llvm::Function* getLLVMLifetimeStartFn()

Description

@ }

Declared at: clang/lib/CodeGen/CodeGenModule.h:1165

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

Description

Returns LLVM linkage for a declarator.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1302

Parameters

const clang::DeclaratorDecl* D
clang::GVALinkage Linkage
bool IsConstantVariable

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

Description

Returns LLVM linkage for a declarator.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1307

Parameters

const clang::VarDecl* VD
bool IsConstant

const clang::LangOptions& getLangOpts() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:720

llvm::StringRef getMangledName(
    clang::GlobalDecl GD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1265

Parameters

clang::GlobalDecl GD

const clang::GlobalDecl getMangledNameDecl(
    llvm::StringRef)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1267

Parameters

llvm::StringRef

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1171

Parameters

const clang::UnaryOperator* e

clang::MicrosoftVTableContext&
getMicrosoftVTableContext()

Declared at: clang/lib/CodeGen/CodeGenModule.h:754

clang::CharUnits getMinimumClassObjectSize(
    const clang::CXXRecordDecl* CD)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:943

Parameters

const clang::CXXRecordDecl* CD

clang::CharUnits getMinimumObjectSize(
    clang::QualType Ty)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:946

Parameters

clang::QualType Ty

llvm::Module& getModule() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:729

clang::CodeGen::CGDebugInfo* getModuleDebugInfo()

Declared at: clang/lib/CodeGen/CodeGenModule.h:711

const std::string& getModuleNameHash() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:618

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1474

Parameters

const clang::CXXRecordDecl* RD

llvm::Constant* getNSConcreteGlobalBlock()

Description

@ {

Declared at: clang/lib/CodeGen/CodeGenModule.h:1158

llvm::Constant* getNSConcreteStackBlock()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1159

clang::CharUnits getNaturalPointeeTypeAlignment(
    clang::QualType T,
    clang::CodeGen::LValueBaseInfo* BaseInfo =
        nullptr,
    clang::CodeGen::TBAAAccessInfo* TBAAInfo =
        nullptr)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1510

Parameters

clang::QualType T
clang::CodeGen::LValueBaseInfo* BaseInfo = nullptr
clang::CodeGen::TBAAAccessInfo* TBAAInfo = nullptr

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1506

Parameters

clang::QualType T
clang::CodeGen::LValueBaseInfo* BaseInfo = nullptr
clang::CodeGen::TBAAAccessInfo* TBAAInfo = nullptr
bool forPointeeType = false

llvm::MDNode* getNoObjCARCExceptionsMetadata()

Declared at: clang/lib/CodeGen/CodeGenModule.h:713

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

Description

Get target specific null pointer.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1504

Parameters

llvm::PointerType* T
is the LLVM type of the null pointer.
clang::QualType QT
is the clang QualType of the null pointer.

llvm::Optional<CharUnits> getOMPAllocateAlignment(
    const clang::VarDecl* VD)

Description

Return the alignment specified in an allocate directive, if present.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1409

Parameters

const clang::VarDecl* VD

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:644

clang::QualType getObjCFastEnumerationStateType()

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1050

clang::CodeGen::CGObjCRuntime& getObjCRuntime()

Description

Return a reference to the configured Objective-C runtime.

Declared at: clang/lib/CodeGen/CodeGenModule.h:610

clang::CodeGen::CGOpenCLRuntime&
getOpenCLRuntime()

Description

Return a reference to the configured OpenCL runtime.

Declared at: clang/lib/CodeGen/CodeGenModule.h:621

clang::CodeGen::CGOpenMPRuntime&
getOpenMPRuntime()

Description

Return a reference to the configured OpenMP runtime.

Declared at: clang/lib/CodeGen/CodeGenModule.h:627

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:671

Parameters

const clang::VarDecl& D
llvm::GlobalValue::LinkageTypes Linkage

llvm::IndexedInstrProfReader* getPGOReader() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:656

clang::CodeGen::InstrProfStats& getPGOStats()

Declared at: clang/lib/CodeGen/CodeGenModule.h:655

const clang::PreprocessorOptions&
getPreprocessorOpts() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:726

llvm::SanitizerStatReport& getSanStats()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1482

clang::CodeGen::SanitizerMetadata*
getSanitizerMetadata()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1362

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:819

Parameters

clang::CharUnits numChars

llvm::Constant* getStaticLocalDeclAddress(
    const clang::VarDecl* D)

Declared at: clang/lib/CodeGen/CodeGenModule.h:662

Parameters

const clang::VarDecl* D

llvm::GlobalVariable*
getStaticLocalDeclGuardAddress(
    const clang::VarDecl* D)

Declared at: clang/lib/CodeGen/CodeGenModule.h:674

Parameters

const clang::VarDecl* D

clang::CodeGen::TBAAAccessInfo getTBAAAccessInfo(
    clang::QualType AccessType)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:767

Parameters

clang::QualType AccessType

llvm::MDNode* getTBAAAccessTagInfo(
    clang::CodeGen::TBAAAccessInfo Info)

Description

getTBAAAccessTagInfo - Get TBAA tag for a given memory access.

Declared at: clang/lib/CodeGen/CodeGenModule.h:780

Parameters

clang::CodeGen::TBAAAccessInfo Info

llvm::MDNode* getTBAABaseTypeInfo(
    clang::QualType QTy)

Description

getTBAABaseTypeInfo - Get metadata that describes the given base access type. Return null if the type is not suitable for use in TBAA access tags.

Declared at: clang/lib/CodeGen/CodeGenModule.h:777

Parameters

clang::QualType QTy

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:799

Parameters

clang::CodeGen::LValue Base
clang::QualType AccessType

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:773

Parameters

clang::QualType QTy

llvm::MDNode* getTBAATypeInfo(clang::QualType QTy)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:763

Parameters

clang::QualType QTy

clang::CodeGen::TBAAAccessInfo
getTBAAVTablePtrAccessInfo(
    llvm::Type* VTablePtrType)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:771

Parameters

llvm::Type* VTablePtrType

const clang::TargetInfo& getTarget() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:734

const clang::CodeGen::TargetCodeGenInfo&
getTargetCodeGenInfo()

Declared at: clang/lib/CodeGen/CodeGenModule.h:744

llvm::FunctionCallee getTerminateFn()

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1480

const llvm::Triple& getTriple() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:735

llvm::Constant* getTypeDescriptorFromMap(
    clang::QualType Ty)

Declared at: clang/lib/CodeGen/CodeGenModule.h:704

Parameters

clang::QualType Ty

clang::CodeGen::CodeGenTypes& getTypes()

Declared at: clang/lib/CodeGen/CodeGenModule.h:746

int getUniqueBlockCount()

Description

Fetches the global unique block count.

Declared at: clang/lib/CodeGen/CodeGenModule.h:979

clang::CharUnits getVBaseAlignment(
    clang::CharUnits DerivedAlign,
    const clang::CXXRecordDecl* Derived,
    const clang::CXXRecordDecl* VBase)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:953

Parameters

clang::CharUnits DerivedAlign
const clang::CXXRecordDecl* Derived
const clang::CXXRecordDecl* VBase

llvm::GlobalVariable::LinkageTypes
getVTableLinkage(const clang::CXXRecordDecl* RD)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1295

Parameters

const clang::CXXRecordDecl* RD

clang::CodeGen::CodeGenVTables& getVTables()

Declared at: clang/lib/CodeGen/CodeGenModule.h:748

bool hasObjCRuntime()

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:616

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1349

Parameters

llvm::Function* Fn
clang::SourceLocation Loc
llvm::StringRef Category = llvm::StringRef()

bool isFunctionBlockedByProfileList(
    llvm::Function* Fn,
    clang::SourceLocation Loc) const

Declared at: clang/lib/CodeGen/CodeGenModule.h:1354

Parameters

llvm::Function* Fn
clang::SourceLocation Loc

Returns

true if \p Fn at \p Loc should be excluded from profile instrumentation by the SCL passed by \p -fprofile-list.

bool isFunctionBlockedFromProfileInstr(
    llvm::Function* Fn,
    clang::SourceLocation Loc) const

Declared at: clang/lib/CodeGen/CodeGenModule.h:1359

Parameters

llvm::Function* Fn
clang::SourceLocation Loc

Returns

true if \p Fn at \p Loc should be excluded from profile instrumentation.

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1342

Parameters

clang::SanitizerMask Kind
llvm::GlobalVariable* GV
clang::SourceLocation Loc
clang::QualType Ty
llvm::StringRef Category = llvm::StringRef()

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1339

Parameters

clang::SanitizerMask Kind
llvm::Function* Fn
clang::SourceLocation Loc

bool isPaddedAtomicType(
    const clang::AtomicType* type)

Declared at: clang/lib/CodeGen/CodeGenModule.h:808

Parameters

const clang::AtomicType* type

bool isPaddedAtomicType(clang::QualType type)

Declared at: clang/lib/CodeGen/CodeGenModule.h:807

Parameters

clang::QualType type

bool isTriviallyRecursive(
    const clang::FunctionDecl* F)

Declared at: clang/lib/CodeGen/CodeGenModule.h:538

Parameters

const clang::FunctionDecl* F

bool isTypeConstant(clang::QualType QTy,
                    bool ExcludeCtorDtor)

Declared at: clang/lib/CodeGen/CodeGenModule.h:805

Parameters

clang::QualType QTy
bool ExcludeCtorDtor

bool lookupRepresentativeDecl(
    llvm::StringRef MangledName,
    clang::GlobalDecl& Result) const

Declared at: clang/lib/CodeGen/CodeGenModule.h:685

Parameters

llvm::StringRef MangledName
clang::GlobalDecl& Result

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:737

Parameters

const clang::Decl& D
llvm::GlobalObject& GO

clang::CodeGen::TBAAAccessInfo
mergeTBAAInfoForCast(
    clang::CodeGen::TBAAAccessInfo SourceInfo,
    clang::CodeGen::TBAAAccessInfo TargetInfo)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:784

Parameters

clang::CodeGen::TBAAAccessInfo SourceInfo
clang::CodeGen::TBAAAccessInfo TargetInfo

clang::CodeGen::TBAAAccessInfo
mergeTBAAInfoForConditionalOperator(
    clang::CodeGen::TBAAAccessInfo InfoA,
    clang::CodeGen::TBAAAccessInfo InfoB)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:789

Parameters

clang::CodeGen::TBAAAccessInfo InfoA
clang::CodeGen::TBAAAccessInfo InfoB

clang::CodeGen::TBAAAccessInfo
mergeTBAAInfoForMemoryTransfer(
    clang::CodeGen::TBAAAccessInfo DestInfo,
    clang::CodeGen::TBAAAccessInfo SrcInfo)

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:794

Parameters

clang::CodeGen::TBAAAccessInfo DestInfo
clang::CodeGen::TBAAAccessInfo SrcInfo

void moveLazyEmissionStates(
    clang::CodeGen::CodeGenModule* NewBuilder)

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1526

Parameters

clang::CodeGen::CodeGenModule* NewBuilder

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

Description

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.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1520

Parameters

llvm::raw_ostream& OS
const clang::Decl* D

void registerGlobalDtorsWithAtExit()

Description

Register functions annotated with __attribute__((destructor)) using __cxa_atexit, if it is available, or atexit otherwise.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1634

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

Description

Notes that CLE's GlobalVariable is GV. Asserts that CLE isn't already emitted.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1040

Parameters

const clang::CompoundLiteralExpr* CLE
llvm::GlobalVariable* GV

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

Description

Notes that BE's global block is available via Addr. Asserts that BE isn't already emitted.

Declared at: clang/lib/CodeGen/CodeGenModule.h:998

Parameters

const clang::BlockExpr* BE
llvm::Constant* Addr

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:699

Parameters

clang::QualType Ty
llvm::Constant* Fn

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:691

Parameters

clang::QualType Ty
llvm::Constant* Fn

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:834

Parameters

llvm::GlobalValue* GV
clang::GlobalDecl D

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:835

Parameters

llvm::GlobalValue* GV
const clang::NamedDecl* D

void setDSOLocal(llvm::GlobalValue* GV) const

Declared at: clang/lib/CodeGen/CodeGenModule.h:824

Parameters

llvm::GlobalValue* GV

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:1289

Parameters

clang::GlobalDecl GD
llvm::Function* F

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

Description

Set visibility, dllimport/dllexport and dso_local. This must be called after dllimport/dllexport is set.

Declared at: clang/lib/CodeGen/CodeGenModule.h:838

Parameters

llvm::GlobalValue* GV
clang::GlobalDecl GD

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:839

Parameters

llvm::GlobalValue* GV
const clang::NamedDecl* D

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:841

Parameters

llvm::GlobalValue* GV
const clang::NamedDecl* D

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

Description

Set the visibility for the given LLVM GlobalValue.

Declared at: clang/lib/CodeGen/CodeGenModule.h:822

Parameters

llvm::GlobalValue* GV
const clang::NamedDecl* D

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

Description

Set the LLVM function attributes that represent floating point environment.

Declared at: clang/lib/CodeGen/CodeGenModule.h:1212

Parameters

const clang::FunctionDecl* D
llvm::Function* F

void setNonAliasAttributes(clang::GlobalDecl GD,
                           llvm::GlobalObject* GO)

Declared at: clang/lib/CodeGen/CodeGenModule.h:1557

Parameters

clang::GlobalDecl GD
llvm::GlobalObject* GO

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:665

Parameters

const clang::VarDecl* D
llvm::Constant* C

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:677

Parameters

const clang::VarDecl* D
llvm::GlobalVariable* C

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

Description

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:845

Parameters

llvm::GlobalValue* GV
const clang::VarDecl& D

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

Declared at: clang/lib/CodeGen/CodeGenModule.h:707

Parameters

clang::QualType Ty
llvm::Constant* C

bool shouldEmitFunction(clang::GlobalDecl GD)

Declared at: clang/lib/CodeGen/CodeGenModule.h:539

Parameters

clang::GlobalDecl GD

bool shouldMapVisibilityToDLLExport(
    const clang::NamedDecl* D) const

Declared at: clang/lib/CodeGen/CodeGenModule.h:826

Parameters

const clang::NamedDecl* D

bool shouldOpportunisticallyEmitVTables()

Declared at: clang/lib/CodeGen/CodeGenModule.h:540

bool shouldUseTBAA() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:742

bool stopAutoInit()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1513

bool supportsCOMDAT() const

Declared at: clang/lib/CodeGen/CodeGenModule.h:736

void unregisterGlobalDtorsWithUnAtExit()

Declared at: clang/lib/CodeGen/CodeGenModule.h:1639

~CodeGenModule()

Declared at: clang/lib/CodeGen/CodeGenModule.h:599