clang 22.0.0git
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
clang::CIRGen::CIRGenModule Class Reference

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

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CIR/CodeGen/CIRGenModule.h"

Inheritance diagram for clang::CIRGen::CIRGenModule:
[legend]

Public Member Functions

 CIRGenModule (mlir::MLIRContext &mlirContext, clang::ASTContext &astContext, const clang::CodeGenOptions &cgo, clang::DiagnosticsEngine &diags)
 
 ~CIRGenModule ()
 
mlir::ModuleOp getModule () const
 
CIRGenBuilderTygetBuilder ()
 
clang::ASTContextgetASTContext () const
 
const clang::TargetInfogetTarget () const
 
const clang::CodeGenOptionsgetCodeGenOpts () const
 
clang::DiagnosticsEnginegetDiags () const
 
CIRGenTypesgetTypes ()
 
const clang::LangOptionsgetLangOpts () const
 
CIRGenCXXABIgetCXXABI () const
 
mlir::MLIRContext & getMLIRContext ()
 
const cir::CIRDataLayout getDataLayout () const
 
void handleCXXStaticMemberVarInstantiation (VarDecl *vd)
 Tell the consumer that this variable has been instantiated.
 
mlir::Operation * getGlobalValue (llvm::StringRef ref)
 
cir::GlobalOp getStaticLocalDeclAddress (const VarDecl *d)
 
void setStaticLocalDeclAddress (const VarDecl *d, cir::GlobalOp c)
 
cir::GlobalOp getOrCreateStaticVarDecl (const VarDecl &d, cir::GlobalLinkageKind linkage)
 
cir::GlobalOp getOrCreateCIRGlobal (llvm::StringRef mangledName, mlir::Type ty, LangAS langAS, const VarDecl *d, ForDefinition_t isForDefinition)
 If the specified mangled name is not in the module, create and return an mlir::GlobalOp value.
 
cir::GlobalOp getOrCreateCIRGlobal (const VarDecl *d, mlir::Type ty, ForDefinition_t isForDefinition)
 
std::string getUniqueGlobalName (const std::string &baseName)
 
mlir::Value getAddrOfGlobalVar (const VarDecl *d, mlir::Type ty={}, ForDefinition_t isForDefinition=NotForDefinition)
 Return the mlir::Value for the address of the given global variable.
 
cir::GlobalViewAttr getAddrOfGlobalVarAttr (const VarDecl *d)
 Return the mlir::GlobalViewAttr for the address of the given global.
 
CharUnits computeNonVirtualBaseClassOffset (const CXXRecordDecl *derivedClass, llvm::iterator_range< CastExpr::path_const_iterator > path)
 
void constructAttributeList (CIRGenCalleeInfo calleeInfo, mlir::NamedAttrList &attrs)
 Get the CIR attributes and calling convention to use for a particular function type.
 
cir::GlobalOp createOrReplaceCXXRuntimeVariable (mlir::Location loc, llvm::StringRef name, mlir::Type ty, cir::GlobalLinkageKind linkage, clang::CharUnits alignment)
 Will return a global variable of the given type.
 
void emitVTable (const CXXRecordDecl *rd)
 This is a callback from Sema to tell us that a particular vtable is required to be emitted in this translation unit.
 
cir::GlobalLinkageKind getVTableLinkage (const CXXRecordDecl *rd)
 Return the appropriate linkage for the vtable, VTT, and type information of the given class.
 
mlir::Attribute getAddrOfRTTIDescriptor (mlir::Location loc, QualType ty, bool forEH=false)
 Get the address of the RTTI descriptor for the given type.
 
mlir::Attribute getConstantArrayFromStringLiteral (const StringLiteral *e)
 Return a constant array for the given string.
 
cir::GlobalOp getGlobalForStringLiteral (const StringLiteral *s, llvm::StringRef name=".str")
 Return a global symbol reference to a constant array for the given string literal.
 
cir::GlobalViewAttr getAddrOfConstantStringFromLiteral (const StringLiteral *s, llvm::StringRef name=".str")
 Return a global symbol reference to a constant array for the given string literal.
 
void setCommonAttributes (GlobalDecl gd, mlir::Operation *op)
 Set attributes which are common to any form of a global definition (alias, Objective-C method, function, global variable).
 
const TargetCIRGenInfogetTargetCIRGenInfo ()
 
mlir::Location getLoc (clang::SourceLocation cLoc)
 Helpers to convert the presumed location of Clang's SourceLocation to an MLIR Location.
 
mlir::Location getLoc (clang::SourceRange cRange)
 
clang::CharUnits getClassPointerAlignment (const clang::CXXRecordDecl *rd)
 Return the best known alignment for an unknown pointer to a particular class.
 
clang::CharUnits getNaturalTypeAlignment (clang::QualType t, LValueBaseInfo *baseInfo)
 FIXME: this could likely be a common helper and not necessarily related with codegen.
 
cir::FuncOp getAddrOfCXXStructor (clang::GlobalDecl gd, const CIRGenFunctionInfo *fnInfo=nullptr, cir::FuncType fnType=nullptr, bool dontDefer=false, ForDefinition_t isForDefinition=NotForDefinition)
 
std::pair< cir::FuncType, cir::FuncOp > getAddrAndTypeOfCXXStructor (clang::GlobalDecl gd, const CIRGenFunctionInfo *fnInfo=nullptr, cir::FuncType fnType=nullptr, bool dontDefer=false, ForDefinition_t isForDefinition=NotForDefinition)
 
mlir::Type getVTableComponentType ()
 
CIRGenVTablesgetVTables ()
 
ItaniumVTableContextgetItaniumVTableContext ()
 
const ItaniumVTableContextgetItaniumVTableContext () const
 
void addDeferredDeclToEmit (clang::GlobalDecl GD)
 
void emitTopLevelDecl (clang::Decl *decl)
 
bool mustBeEmitted (const clang::ValueDecl *d)
 Determine whether the definition must be emitted; if this returns false, the definition can be emitted lazily if it's used.
 
bool mayBeEmittedEagerly (const clang::ValueDecl *d)
 Determine whether the definition can be emitted eagerly, or should be delayed until the end of the translation unit.
 
bool verifyModule () const
 
cir::FuncOp getAddrOfFunction (clang::GlobalDecl gd, mlir::Type funcType=nullptr, bool forVTable=false, bool dontDefer=false, ForDefinition_t isForDefinition=NotForDefinition)
 Return the address of the given function.
 
mlir::Operation * getAddrOfGlobal (clang::GlobalDecl gd, ForDefinition_t isForDefinition=NotForDefinition)
 
bool shouldEmitRTTI (bool forEH=false)
 
void emitExplicitCastExprType (const ExplicitCastExpr *e, CIRGenFunction *cgf=nullptr)
 Emit type info if type of an expression is a variably modified type.
 
void emitGlobal (clang::GlobalDecl gd)
 Emit code for a single global function or variable declaration.
 
void emitAliasForGlobal (llvm::StringRef mangledName, mlir::Operation *op, GlobalDecl aliasGD, cir::FuncOp aliasee, cir::GlobalLinkageKind linkage)
 
mlir::Type convertType (clang::QualType type)
 
void setGlobalVisibility (mlir::Operation *op, const NamedDecl *d) const
 Set the visibility for the given global.
 
void setDSOLocal (mlir::Operation *op) const
 
void setDSOLocal (cir::CIRGlobalValueInterface gv) const
 
void setGVProperties (mlir::Operation *op, const NamedDecl *d) const
 Set visibility, dllimport/dllexport and dso_local.
 
void setGVPropertiesAux (mlir::Operation *op, const NamedDecl *d) const
 
void setFunctionAttributes (GlobalDecl gd, cir::FuncOp f, bool isIncompleteFunction, bool isThunk)
 Set function attributes for a function declaration.
 
void emitGlobalDefinition (clang::GlobalDecl gd, mlir::Operation *op=nullptr)
 
void emitGlobalFunctionDefinition (clang::GlobalDecl gd, mlir::Operation *op)
 
void emitGlobalVarDefinition (const clang::VarDecl *vd, bool isTentative=false)
 
void emitGlobalOpenACCDecl (const clang::OpenACCConstructDecl *cd)
 
void emitDeclContext (const DeclContext *dc)
 
mlir::Value emitNullConstant (QualType t, mlir::Location loc)
 Return the result of value-initializing the given type, i.e.
 
llvm::StringRef getMangledName (clang::GlobalDecl gd)
 
void emitTentativeDefinition (const VarDecl *d)
 
void updateCompletedType (const clang::TagDecl *td)
 
cir::FuncOp codegenCXXStructor (clang::GlobalDecl gd)
 
bool supportsCOMDAT () const
 
void maybeSetTrivialComdat (const clang::Decl &d, mlir::Operation *op)
 
void replaceUsesOfNonProtoTypeWithRealFunction (mlir::Operation *old, cir::FuncOp newFn)
 This function is called when we implement a function with no prototype, e.g.
 
cir::FuncOp getOrCreateCIRFunction (llvm::StringRef mangledName, mlir::Type funcType, clang::GlobalDecl gd, bool forVTable, bool dontDefer=false, bool isThunk=false, ForDefinition_t isForDefinition=NotForDefinition, mlir::ArrayAttr extraAttrs={})
 
cir::FuncOp createCIRFunction (mlir::Location loc, llvm::StringRef name, cir::FuncType funcType, const clang::FunctionDecl *funcDecl)
 
cir::FuncOp getBuiltinLibFunction (const FunctionDecl *fd, unsigned builtinID)
 Given a builtin id for a function like "__builtin_fabsf", return a Function* for "fabsf".
 
mlir::IntegerAttr getSize (CharUnits size)
 
void emitDeferred ()
 Emit any needed decls for which code generation was deferred.
 
void emitGlobalDecl (const clang::GlobalDecl &d)
 Helper for emitDeferred to apply actual codegen.
 
const llvm::Triple & getTriple () const
 
void release ()
 
cir::VisibilityAttr getGlobalVisibilityAttrFromDecl (const Decl *decl)
 
cir::GlobalLinkageKind getFunctionLinkage (GlobalDecl gd)
 
cir::GlobalLinkageKind getCIRLinkageForDeclarator (const DeclaratorDecl *dd, GVALinkage linkage, bool isConstantVariable)
 
void setFunctionLinkage (GlobalDecl gd, cir::FuncOp f)
 
cir::GlobalLinkageKind getCIRLinkageVarDefinition (const VarDecl *vd, bool isConstant)
 
void addReplacement (llvm::StringRef name, mlir::Operation *op)
 
DiagnosticBuilder errorNYI (SourceLocation, llvm::StringRef)
 Helpers to emit "not yet implemented" error diagnostics.
 
template<typename T >
DiagnosticBuilder errorNYI (SourceLocation loc, llvm::StringRef feature, const T &name)
 
DiagnosticBuilder errorNYI (mlir::Location loc, llvm::StringRef feature)
 
DiagnosticBuilder errorNYI (llvm::StringRef feature) const
 
DiagnosticBuilder errorNYI (SourceRange, llvm::StringRef)
 
template<typename T >
DiagnosticBuilder errorNYI (SourceRange loc, llvm::StringRef feature, const T &name)
 
- Public Member Functions inherited from clang::CIRGen::CIRGenTypeCache
 CIRGenTypeCache ()
 
clang::CharUnits getSizeAlign () const
 
clang::CharUnits getPointerAlign () const
 

Static Public Member Functions

static cir::GlobalOp createGlobalOp (CIRGenModule &cgm, mlir::Location loc, llvm::StringRef name, mlir::Type t, bool isConstant=false, mlir::Operation *insertPoint=nullptr)
 
static void setInitializer (cir::GlobalOp &op, mlir::Attribute value)
 
static mlir::SymbolTable::Visibility getMLIRVisibilityFromCIRLinkage (cir::GlobalLinkageKind GLK)
 
static cir::VisibilityKind getGlobalVisibilityKindFromClangVisibility (clang::VisibilityAttr::VisibilityType visibility)
 
static mlir::SymbolTable::Visibility getMLIRVisibility (cir::GlobalOp op)
 

Public Attributes

mlir::Operation * lastGlobalOp = nullptr
 
llvm::DenseMap< const Decl *, cir::GlobalOp > staticLocalDeclMap
 
llvm::StringMap< unsignedcgGlobalNames
 
std::map< llvm::StringRef, clang::GlobalDecldeferredDecls
 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.
 
std::vector< clang::GlobalDecldeferredDeclsToEmit
 
- Public Attributes inherited from clang::CIRGen::CIRGenTypeCache
cir::VoidType VoidTy
 
cir::IntType SInt8Ty
 
cir::IntType SInt16Ty
 
cir::IntType SInt32Ty
 
cir::IntType SInt64Ty
 
cir::IntType SInt128Ty
 
cir::IntType UInt8Ty
 
cir::IntType UInt16Ty
 
cir::IntType UInt32Ty
 
cir::IntType UInt64Ty
 
cir::IntType UInt128Ty
 
cir::FP16Type FP16Ty
 
cir::BF16Type BFloat16Ty
 
cir::SingleType FloatTy
 
cir::DoubleType DoubleTy
 
cir::FP80Type FP80Ty
 
cir::FP128Type FP128Ty
 
union {
   mlir::Type   UIntPtrTy
 
   mlir::Type   SizeTy
 
}; 
 intptr_t, size_t, and ptrdiff_t, which we assume are the same size.
 
mlir::Type PtrDiffTy
 
cir::PointerType VoidPtrTy
 void* in address space 0
 
cir::PointerType UInt8PtrTy
 
union {
   unsigned char   PointerAlignInBytes
 
   unsigned char   PointerSizeInBytes
 
}; 
 The size and alignment of a pointer into the generic address space.
 
unsigned char SizeAlignInBytes
 The alignment of size_t.
 

Detailed Description

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

Definition at line 56 of file CIRGenModule.h.

Constructor & Destructor Documentation

◆ CIRGenModule()

CIRGenModule::CIRGenModule ( mlir::MLIRContext &  mlirContext,
clang::ASTContext astContext,
const clang::CodeGenOptions cgo,
clang::DiagnosticsEngine diags 
)

◆ ~CIRGenModule()

CIRGenModule::~CIRGenModule ( )
default

Member Function Documentation

◆ addDeferredDeclToEmit()

void clang::CIRGen::CIRGenModule::addDeferredDeclToEmit ( clang::GlobalDecl  GD)
inline

Definition at line 273 of file CIRGenModule.h.

References deferredDeclsToEmit.

Referenced by emitGlobal(), and getOrCreateCIRFunction().

◆ addReplacement()

void CIRGenModule::addReplacement ( llvm::StringRef  name,
mlir::Operation *  op 
)

Definition at line 938 of file CIRGenModule.cpp.

◆ codegenCXXStructor()

cir::FuncOp CIRGenModule::codegenCXXStructor ( clang::GlobalDecl  gd)

◆ computeNonVirtualBaseClassOffset()

CharUnits CIRGenModule::computeNonVirtualBaseClassOffset ( const CXXRecordDecl derivedClass,
llvm::iterator_range< CastExpr::path_const_iterator path 
)

◆ constructAttributeList()

void CIRGenModule::constructAttributeList ( CIRGenCalleeInfo  calleeInfo,
mlir::NamedAttrList &  attrs 
)

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

Construct the CIR attribute list of a function or call.

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

Definition at line 113 of file CIRGenCall.cpp.

References addAttributesFromFunctionProtoType(), getBuilder(), clang::CIRGen::CIRGenCalleeInfo::getCalleeDecl(), clang::CIRGen::CIRGenCalleeInfo::getCalleeFunctionProtoType(), clang::GlobalDecl::getDecl(), getMLIRContext(), clang::Decl::hasAttr(), cir::MissingFeatures::opCallAttrs(), and cir::MissingFeatures::opCallCallConv().

Referenced by clang::CIRGen::CIRGenFunction::emitCall().

◆ convertType()

mlir::Type CIRGenModule::convertType ( clang::QualType  type)

◆ createCIRFunction()

cir::FuncOp CIRGenModule::createCIRFunction ( mlir::Location  loc,
llvm::StringRef  name,
cir::FuncType  funcType,
const clang::FunctionDecl funcDecl 
)

◆ createGlobalOp()

cir::GlobalOp CIRGenModule::createGlobalOp ( CIRGenModule cgm,
mlir::Location  loc,
llvm::StringRef  name,
mlir::Type  t,
bool  isConstant = false,
mlir::Operation *  insertPoint = nullptr 
)
static

◆ createOrReplaceCXXRuntimeVariable()

cir::GlobalOp CIRGenModule::createOrReplaceCXXRuntimeVariable ( mlir::Location  loc,
llvm::StringRef  name,
mlir::Type  ty,
cir::GlobalLinkageKind  linkage,
clang::CharUnits  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 997 of file CIRGenModule.cpp.

References createGlobalOp(), errorNYI(), getMLIRContext(), getMLIRVisibility(), getSize(), cir::isWeakForLinker(), setDSOLocal(), and supportsCOMDAT().

◆ emitAliasForGlobal()

void CIRGenModule::emitAliasForGlobal ( llvm::StringRef  mangledName,
mlir::Operation *  op,
GlobalDecl  aliasGD,
cir::FuncOp  aliasee,
cir::GlobalLinkageKind  linkage 
)

◆ emitDeclContext()

void CIRGenModule::emitDeclContext ( const DeclContext dc)

◆ emitDeferred()

void CIRGenModule::emitDeferred ( )

Emit any needed decls for which code generation was deferred.

Definition at line 307 of file CIRGenModule.cpp.

References cir::MissingFeatures::cudaSupport(), deferredDeclsToEmit, cir::MissingFeatures::deferredVtables(), emitDeferred(), emitGlobalDecl(), and cir::MissingFeatures::openMP().

Referenced by emitDeferred(), and release().

◆ emitExplicitCastExprType()

void CIRGenModule::emitExplicitCastExprType ( const ExplicitCastExpr e,
CIRGenFunction 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 1356 of file CIRGenModule.cpp.

References clang::CIRGen::CIRGenFunction::emitVariablyModifiedType(), cir::MissingFeatures::generateDebugInfo(), clang::Expr::getType(), and clang::Type::isVariablyModifiedType().

Referenced by clang::CIRGen::CIRGenFunction::emitCastLValue(), and clang::CIRGen::CIRGenFunction::emitPointerWithAlignment().

◆ emitGlobal()

void CIRGenModule::emitGlobal ( clang::GlobalDecl  gd)

◆ emitGlobalDecl()

void CIRGenModule::emitGlobalDecl ( const clang::GlobalDecl d)

Helper for emitDeferred to apply actual codegen.

Definition at line 269 of file CIRGenModule.cpp.

References emitGlobalDefinition(), clang::CIRGen::ForDefinition, getAddrOfGlobal(), getGlobalValue(), getMangledName(), getModule(), and cir::MissingFeatures::openMP().

Referenced by emitDeferred().

◆ emitGlobalDefinition()

void CIRGenModule::emitGlobalDefinition ( clang::GlobalDecl  gd,
mlir::Operation *  op = nullptr 
)

◆ emitGlobalFunctionDefinition()

void CIRGenModule::emitGlobalFunctionDefinition ( clang::GlobalDecl  gd,
mlir::Operation *  op 
)

◆ emitGlobalOpenACCDecl()

void CIRGenModule::emitGlobalOpenACCDecl ( const clang::OpenACCConstructDecl cd)

Definition at line 27 of file CIRGenDeclOpenACC.cpp.

References errorNYI(), and clang::OpenACCConstructDecl::getSourceRange().

Referenced by emitGlobal(), and emitTopLevelDecl().

◆ emitGlobalVarDefinition()

void CIRGenModule::emitGlobalVarDefinition ( const clang::VarDecl vd,
bool  isTentative = false 
)

◆ emitNullConstant()

mlir::Value CIRGenModule::emitNullConstant ( QualType  t,
mlir::Location  loc 
)

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

a null expression of the given type.

Definition at line 938 of file CIRGenExprConstant.cpp.

References errorNYI(), clang::Type::getAs(), getASTContext(), clang::CIRGen::CIRGenBuilderTy::getNullPtr(), cir::CIRBaseBuilderTy::getNullValue(), getTypes(), clang::Type::isMemberDataPointerType(), and clang::Type::isRecordType().

◆ emitTentativeDefinition()

void CIRGenModule::emitTentativeDefinition ( const VarDecl d)

◆ emitTopLevelDecl()

void CIRGenModule::emitTopLevelDecl ( clang::Decl decl)

◆ emitVTable()

void CIRGenModule::emitVTable ( const CXXRecordDecl rd)

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 55 of file CIRGenVTables.cpp.

References clang::CIRGen::CIRGenVTables::generateClassData().

◆ errorNYI() [1/6]

DiagnosticBuilder clang::CIRGen::CIRGenModule::errorNYI ( llvm::StringRef  feature) const
inline

◆ errorNYI() [2/6]

DiagnosticBuilder clang::CIRGen::CIRGenModule::errorNYI ( mlir::Location  loc,
llvm::StringRef  feature 
)
inline

◆ errorNYI() [3/6]

template<typename T >
DiagnosticBuilder clang::CIRGen::CIRGenModule::errorNYI ( SourceLocation  loc,
llvm::StringRef  feature,
const T name 
)
inline

◆ errorNYI() [4/6]

DiagnosticBuilder CIRGenModule::errorNYI ( SourceLocation  loc,
llvm::StringRef  feature 
)

Helpers to emit "not yet implemented" error diagnostics.

Definition at line 2194 of file CIRGenModule.cpp.

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

Referenced by clang::CIRGen::CIRGenFunction::addInitializerToStaticVarDecl(), appendParameterTypes(), clang::CIRGen::CIRGenTypes::arrangeCXXConstructorCall(), clang::CIRGen::CIRGenTypes::arrangeCXXStructorDeclaration(), arrangeFreeFunctionLikeCall(), clang::CIRGen::CIRGenTypes::arrangeGlobalDeclaration(), clang::CIRGen::CIRGenFunction::buildFunctionArgList(), clang::CIRGen::CIRGenFunction::convertTempToRValue(), clang::CIRGen::CIRGenTypes::convertType(), createCXXABI(), clang::CIRGen::CIRGenFunction::createMemTemp(), createOrReplaceCXXRuntimeVariable(), createReferenceTemporary(), clang::CIRGen::CIRGenTypes::deriveThisType(), clang::CIRGen::ConstantEmitter::emitAbstract(), clang::CIRGen::CIRGenFunction::emitAddrOfFieldStorage(), emitAliasForGlobal(), clang::CIRGen::CIRGenFunction::emitArrayLength(), clang::CIRGen::CIRGenFunction::emitArraySubscriptExpr(), clang::CIRGen::CIRGenFunction::emitAsmStmt(), clang::CIRGen::CIRGenFunction::emitAtomicExpr(), clang::CIRGen::CIRGenFunction::emitAtomicInit(), emitAtomicOp(), clang::CIRGen::CIRGenFunction::emitAutoVarAlloca(), clang::CIRGen::CIRGenFunction::emitAutoVarCleanups(), clang::CIRGen::CIRGenFunction::emitAutoVarInit(), clang::CIRGen::CIRGenFunction::emitAutoVarTypeCleanup(), clang::CIRGen::CIRGenFunction::emitBinaryOperatorLValue(), clang::CIRGen::CIRGenFunction::emitBuiltinExpr(), clang::CIRGen::CIRGenFunction::emitCall(), clang::CIRGen::CIRGenFunction::emitCallArg(), clang::CIRGen::CIRGenFunction::emitCallArgs(), clang::CIRGen::CIRGenFunction::emitCallee(), clang::CIRGen::CIRGenFunction::emitCallExpr(), clang::CIRGen::CIRGenFunction::emitCallExprLValue(), clang::CIRGen::CIRGenFunction::emitCastLValue(), clang::CIRGen::CIRGenFunction::emitCheckedArgForAssume(), clang::CIRGen::CIRGenFunction::emitComplexAssignmentLValue(), clang::CIRGen::CIRGenFunction::emitComplexPrePostIncDec(), clang::CIRGen::CIRGenFunction::emitCompoundLiteralLValue(), clang::CIRGen::CIRGenFunction::emitConstructorBody(), clang::CIRGen::CIRGenFunction::emitCtorPrologue(), clang::CIRGen::CIRGenFunction::emitCXXAggrConstructorCall(), clang::CIRGen::CIRGenFunction::emitCXXConstructExpr(), clang::CIRGen::CIRGenFunction::emitCXXConstructorCall(), clang::CIRGen::CIRGenFunction::emitCXXMemberCallExpr(), clang::CIRGen::CIRGenFunction::emitCXXMemberOrOperatorMemberCallExpr(), emitCXXNewAllocSize(), clang::CIRGen::CIRGenFunction::emitCXXNewExpr(), clang::CIRGen::CIRGenFunction::emitCXXPseudoDestructorExpr(), clang::CIRGen::CIRGenFunction::emitCXXThrowExpr(), clang::CIRGen::CIRGenFunction::emitDecl(), emitDeclContext(), clang::CIRGen::CIRGenFunction::emitDeclRefLValue(), clang::CIRGen::CIRGenFunction::emitDelegateCallArg(), clang::CIRGen::CIRGenFunction::emitDelegateCXXConstructorCall(), clang::CIRGen::CIRGenFunction::emitDelegatingCXXConstructorCall(), clang::CIRGen::CIRGenFunction::emitDestroy(), clang::CIRGen::CIRGenFunction::emitDestructorBody(), clang::CIRGen::CIRGenFunction::emitExprAsInit(), clang::CIRGen::ConstantEmitter::emitForMemory(), emitGlobal(), emitGlobalDefinition(), emitGlobalFunctionDefinition(), emitGlobalOpenACCDecl(), emitGlobalVarDeclLValue(), emitGlobalVarDefinition(), clang::CIRGen::CIRGenFunction::emitImplicitAssignmentOperatorBody(), clang::CIRGen::CIRGenFunction::emitInitializerForField(), clang::CIRGen::CIRGenFunction::emitLabelStmt(), clang::CIRGen::CIRGenFunction::emitLoadOfLValue(), clang::CIRGen::CIRGenFunction::emitLoadOfReference(), clang::CIRGen::CIRGenFunction::emitLoadOfScalar(), clang::CIRGen::CIRGenFunction::emitLValue(), clang::CIRGen::CIRGenFunction::emitLValueForField(), clang::CIRGen::CIRGenFunction::emitMaterializeTemporaryExpr(), clang::CIRGen::CIRGenFunction::emitMemberExpr(), emitMemberInitializer(), emitNewInitializer(), emitNullConstant(), clang::CIRGen::CIRGenFunction::emitNullInitialization(), clang::CIRGen::CIRGenFunction::emitOpenACCAtomicConstruct(), clang::CIRGen::CIRGenFunction::emitOpenACCDeclare(), clang::CIRGen::CIRGenFunction::emitOpenACCRoutine(), clang::CIRGen::CIRGenFunction::emitOpOnBoolExpr(), emitPointerArithmetic(), clang::CIRGen::CIRGenFunction::emitPointerWithAlignment(), clang::CIRGen::CIRGenFunction::emitReturnStmt(), clang::CIRGen::CIRGenFunction::emitScalarConstant(), clang::CIRGen::CIRGenFunction::emitScalarInit(), clang::CIRGen::CIRGenFunction::emitStaticVarDecl(), clang::CIRGen::CIRGenFunction::emitStmt(), clang::CIRGen::CIRGenFunction::emitStoreOfScalar(), clang::CIRGen::CIRGenFunction::emitStoreThroughLValue(), clang::CIRGen::CIRGenVTables::emitThunks(), emitTopLevelDecl(), clang::CIRGen::CIRGenFunction::emitUnaryOpLValue(), clang::CIRGen::CIRGenFunction::emitVarDecl(), clang::CIRGen::CIRGenFunction::emitVariablyModifiedType(), errorNYI(), clang::CIRGen::CIRGenFunction::evaluateExprAsBool(), clang::CIRGen::CIRGenVTables::generateClassData(), clang::CIRGen::CIRGenFunction::generateCode(), getAddrAndTypeOfCXXStructor(), clang::CIRGen::CIRGenFunction::getAddressOfBaseClass(), getAddrOfFunction(), getAddrOfRTTIDescriptor(), getCIRGenToUse(), getCIRLinkageForDeclarator(), getConstantArrayFromStringLiteral(), clang::CIRGen::CIRGenFunction::getDestroyer(), clang::CIRGen::CIRGenTypes::getFunctionTypeForVTable(), getGlobalForStringLiteral(), getMangledName(), getMangledNameImpl(), getOrCreateCIRFunction(), getOrCreateStaticVarDecl(), clang::CIRGen::CIRGenFunction::ConstantEmission::getReferenceLValue(), getStaticDeclName(), clang::CIRGen::CIRGenFunction::getUndefRValue(), getVTableLinkage(), clang::CIRGen::CIRGenFunction::initializeVTablePointer(), clang::CIRGen::CIRGenFunction::isLValueSuitableForInlineAtomic(), clang::CIRGen::CIRGenTypes::isZeroInitializable(), mayBeEmittedEagerly(), clang::CIRGen::CIRGenFunction::pushFullExprCleanup(), pushTemporaryCleanup(), replaceUsesOfNonProtoTypeWithRealFunction(), shouldAssumeDSOLocal(), clang::CIRGen::CIRGenFunction::startFunction(), storeAnyExprIntoOneUnit(), clang::CIRGen::ConstantEmitter::tryEmitPrivate(), clang::CIRGen::ConstantEmitter::tryEmitPrivateForVarInit(), ConstExprEmitter::VisitCastExpr(), ConstExprEmitter::VisitCXXConstructExpr(), ConstExprEmitter::VisitCXXDefaultInitExpr(), ConstExprEmitter::VisitDesignatedInitUpdateExpr(), ConstExprEmitter::VisitImplicitValueInitExpr(), ConstExprEmitter::VisitInitListExpr(), and ConstExprEmitter::VisitObjCEncodeExpr().

◆ errorNYI() [5/6]

template<typename T >
DiagnosticBuilder clang::CIRGen::CIRGenModule::errorNYI ( SourceRange  loc,
llvm::StringRef  feature,
const T name 
)
inline

Definition at line 459 of file CIRGenModule.h.

References errorNYI(), and clang::SourceRange::getBegin().

◆ errorNYI() [6/6]

DiagnosticBuilder CIRGenModule::errorNYI ( SourceRange  loc,
llvm::StringRef  feature 
)

Definition at line 2201 of file CIRGenModule.cpp.

References errorNYI(), and clang::SourceRange::getBegin().

◆ getAddrAndTypeOfCXXStructor()

std::pair< cir::FuncType, cir::FuncOp > CIRGenModule::getAddrAndTypeOfCXXStructor ( clang::GlobalDecl  gd,
const CIRGenFunctionInfo fnInfo = nullptr,
cir::FuncType  fnType = nullptr,
bool  dontDefer = false,
ForDefinition_t  isForDefinition = NotForDefinition 
)

◆ getAddrOfConstantStringFromLiteral()

cir::GlobalViewAttr CIRGenModule::getAddrOfConstantStringFromLiteral ( const StringLiteral s,
llvm::StringRef  name = ".str" 
)

Return a global symbol reference to a constant array for the given string literal.

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

Definition at line 1345 of file CIRGenModule.cpp.

References cir::MissingFeatures::addressSpace(), getBuilder(), getGlobalForStringLiteral(), cir::CIRBaseBuilderTy::getGlobalViewAttr(), cir::CIRBaseBuilderTy::getPointerTo(), and s.

◆ getAddrOfCXXStructor()

cir::FuncOp clang::CIRGen::CIRGenModule::getAddrOfCXXStructor ( clang::GlobalDecl  gd,
const CIRGenFunctionInfo fnInfo = nullptr,
cir::FuncType  fnType = nullptr,
bool  dontDefer = false,
ForDefinition_t  isForDefinition = NotForDefinition 
)
inline

◆ getAddrOfFunction()

cir::FuncOp CIRGenModule::getAddrOfFunction ( clang::GlobalDecl  gd,
mlir::Type  funcType = nullptr,
bool  forVTable = false,
bool  dontDefer = false,
ForDefinition_t  isForDefinition = NotForDefinition 
)

◆ getAddrOfGlobal()

mlir::Operation * CIRGenModule::getAddrOfGlobal ( clang::GlobalDecl  gd,
ForDefinition_t  isForDefinition = NotForDefinition 
)

◆ getAddrOfGlobalVar()

mlir::Value CIRGenModule::getAddrOfGlobalVar ( const VarDecl d,
mlir::Type  ty = {},
ForDefinition_t  isForDefinition = NotForDefinition 
)

Return the mlir::Value 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.

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 680 of file CIRGenModule.cpp.

References clang::CIRGen::CIRGenTypes::convertTypeForMem(), getLoc(), getOrCreateCIRGlobal(), cir::CIRBaseBuilderTy::getPointerTo(), clang::VarDecl::getSourceRange(), clang::ValueDecl::getType(), getTypes(), clang::VarDecl::hasGlobalStorage(), and cir::MissingFeatures::opGlobalThreadLocal().

Referenced by emitGlobal(), emitGlobalVarDeclLValue(), getAddrOfGlobal(), and handleCXXStaticMemberVarInstantiation().

◆ getAddrOfGlobalVarAttr()

cir::GlobalViewAttr CIRGenModule::getAddrOfGlobalVarAttr ( const VarDecl d)

◆ getAddrOfRTTIDescriptor()

mlir::Attribute CIRGenModule::getAddrOfRTTIDescriptor ( mlir::Location  loc,
QualType  ty,
bool  forEH = false 
)

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

Definition at line 2156 of file CIRGenModule.cpp.

References errorNYI(), cir::CIRBaseBuilderTy::getConstNullPtrAttr(), clang::CIRGen::CIRGenBuilderTy::getUInt8PtrTy(), and shouldEmitRTTI().

◆ getASTContext()

clang::ASTContext & clang::CIRGen::CIRGenModule::getASTContext ( ) const
inline

◆ getBuilder()

CIRGenBuilderTy & clang::CIRGen::CIRGenModule::getBuilder ( )
inline

◆ getBuiltinLibFunction()

cir::FuncOp CIRGenModule::getBuiltinLibFunction ( const FunctionDecl fd,
unsigned  builtinID 
)

◆ getCIRLinkageForDeclarator()

cir::GlobalLinkageKind CIRGenModule::getCIRLinkageForDeclarator ( const DeclaratorDecl dd,
GVALinkage  linkage,
bool  isConstantVariable 
)

◆ getCIRLinkageVarDefinition()

cir::GlobalLinkageKind CIRGenModule::getCIRLinkageVarDefinition ( const VarDecl vd,
bool  isConstant 
)

◆ getClassPointerAlignment()

CharUnits CIRGenModule::getClassPointerAlignment ( const clang::CXXRecordDecl rd)

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

FIXME: this could likely be a common helper and not necessarily related with codegen.

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

Definition at line 127 of file CIRGenModule.cpp.

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

Referenced by clang::CIRGen::CIRGenFunction::loadCXXThisAddress().

◆ getCodeGenOpts()

const clang::CodeGenOptions & clang::CIRGen::CIRGenModule::getCodeGenOpts ( ) const
inline

◆ getConstantArrayFromStringLiteral()

mlir::Attribute CIRGenModule::getConstantArrayFromStringLiteral ( const StringLiteral e)

◆ getCXXABI()

CIRGenCXXABI & clang::CIRGen::CIRGenModule::getCXXABI ( ) const
inline

◆ getDataLayout()

const cir::CIRDataLayout clang::CIRGen::CIRGenModule::getDataLayout ( ) const
inline

◆ getDiags()

clang::DiagnosticsEngine & clang::CIRGen::CIRGenModule::getDiags ( ) const
inline

Definition at line 105 of file CIRGenModule.h.

Referenced by collectClobbers().

◆ getFunctionLinkage()

cir::GlobalLinkageKind CIRGenModule::getFunctionLinkage ( GlobalDecl  gd)

◆ getGlobalForStringLiteral()

cir::GlobalOp CIRGenModule::getGlobalForStringLiteral ( const StringLiteral s,
llvm::StringRef  name = ".str" 
)

Return a global symbol reference to a constant array for the given string literal.

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

Definition at line 1307 of file CIRGenModule.cpp.

References c, errorNYI(), generateStringLiteral(), clang::ASTContext::getAlignOfGlobalVarInChars(), getConstantArrayFromStringLiteral(), getCXXABI(), getLangOpts(), getLoc(), getUniqueGlobalName(), s, cir::MissingFeatures::sanitizers(), and setDSOLocal().

Referenced by clang::CIRGen::CIRGenFunction::emitStringLiteralLValue(), and getAddrOfConstantStringFromLiteral().

◆ getGlobalValue()

mlir::Operation * CIRGenModule::getGlobalValue ( llvm::StringRef  ref)

◆ getGlobalVisibilityAttrFromDecl()

cir::VisibilityAttr CIRGenModule::getGlobalVisibilityAttrFromDecl ( const Decl decl)

◆ getGlobalVisibilityKindFromClangVisibility()

cir::VisibilityKind CIRGenModule::getGlobalVisibilityKindFromClangVisibility ( clang::VisibilityAttr::VisibilityType  visibility)
static

Definition at line 2068 of file CIRGenModule.cpp.

Referenced by getGlobalVisibilityAttrFromDecl().

◆ getItaniumVTableContext() [1/2]

ItaniumVTableContext & clang::CIRGen::CIRGenModule::getItaniumVTableContext ( )
inline

◆ getItaniumVTableContext() [2/2]

const ItaniumVTableContext & clang::CIRGen::CIRGenModule::getItaniumVTableContext ( ) const
inline

◆ getLangOpts()

const clang::LangOptions & clang::CIRGen::CIRGenModule::getLangOpts ( ) const
inline

◆ getLoc() [1/2]

mlir::Location CIRGenModule::getLoc ( clang::SourceLocation  cLoc)

◆ getLoc() [2/2]

mlir::Location CIRGenModule::getLoc ( clang::SourceRange  cRange)

◆ getMangledName()

StringRef CIRGenModule::getMangledName ( clang::GlobalDecl  gd)

◆ getMLIRContext()

mlir::MLIRContext & clang::CIRGen::CIRGenModule::getMLIRContext ( )
inline

◆ getMLIRVisibility()

mlir::SymbolTable::Visibility CIRGenModule::getMLIRVisibility ( cir::GlobalOp  op)
static

Definition at line 2037 of file CIRGenModule.cpp.

References getMLIRVisibilityFromCIRLinkage().

Referenced by createOrReplaceCXXRuntimeVariable().

◆ getMLIRVisibilityFromCIRLinkage()

mlir::SymbolTable::Visibility CIRGenModule::getMLIRVisibilityFromCIRLinkage ( cir::GlobalLinkageKind  GLK)
static

Visibility and Linkage

Definition at line 2046 of file CIRGenModule.cpp.

Referenced by emitGlobalVarDefinition(), getMLIRVisibility(), getOrCreateStaticVarDecl(), and setFunctionLinkage().

◆ getModule()

mlir::ModuleOp clang::CIRGen::CIRGenModule::getModule ( ) const
inline

Definition at line 100 of file CIRGenModule.h.

Referenced by createGlobalOp(), emitGlobalDecl(), and getOrCreateStaticVarDecl().

◆ getNaturalTypeAlignment()

CharUnits CIRGenModule::getNaturalTypeAlignment ( clang::QualType  t,
LValueBaseInfo baseInfo 
)

◆ getOrCreateCIRFunction()

cir::FuncOp CIRGenModule::getOrCreateCIRFunction ( llvm::StringRef  mangledName,
mlir::Type  funcType,
clang::GlobalDecl  gd,
bool  forVTable,
bool  dontDefer = false,
bool  isThunk = false,
ForDefinition_t  isForDefinition = NotForDefinition,
mlir::ArrayAttr  extraAttrs = {} 
)

◆ getOrCreateCIRGlobal() [1/2]

cir::GlobalOp CIRGenModule::getOrCreateCIRGlobal ( const VarDecl d,
mlir::Type  ty,
ForDefinition_t  isForDefinition 
)

◆ getOrCreateCIRGlobal() [2/2]

cir::GlobalOp clang::CIRGen::CIRGenModule::getOrCreateCIRGlobal ( llvm::StringRef  mangledName,
mlir::Type  ty,
LangAS  langAS,
const VarDecl d,
ForDefinition_t  isForDefinition 
)

If the specified mangled name is not in the module, create and return an mlir::GlobalOp value.

Referenced by emitGlobalVarDefinition(), getAddrOfGlobalVar(), getAddrOfGlobalVarAttr(), and getOrCreateCIRGlobal().

◆ getOrCreateStaticVarDecl()

cir::GlobalOp CIRGenModule::getOrCreateStaticVarDecl ( const VarDecl d,
cir::GlobalLinkageKind  linkage 
)

◆ getSize()

mlir::IntegerAttr clang::CIRGen::CIRGenModule::getSize ( CharUnits  size)
inline

◆ getStaticLocalDeclAddress()

cir::GlobalOp clang::CIRGen::CIRGenModule::getStaticLocalDeclAddress ( const VarDecl d)
inline

Definition at line 131 of file CIRGenModule.h.

References staticLocalDeclMap.

Referenced by getOrCreateStaticVarDecl().

◆ getTarget()

const clang::TargetInfo & clang::CIRGen::CIRGenModule::getTarget ( ) const
inline

◆ getTargetCIRGenInfo()

const TargetCIRGenInfo & CIRGenModule::getTargetCIRGenInfo ( )

◆ getTriple()

const llvm::Triple & clang::CIRGen::CIRGenModule::getTriple ( ) const
inline

◆ getTypes()

CIRGenTypes & clang::CIRGen::CIRGenModule::getTypes ( )
inline

◆ getUniqueGlobalName()

std::string CIRGenModule::getUniqueGlobalName ( const std::string &  baseName)

Definition at line 1290 of file CIRGenModule.cpp.

References cgGlobalNames.

Referenced by getGlobalForStringLiteral().

◆ getVTableComponentType()

mlir::Type CIRGenModule::getVTableComponentType ( )

◆ getVTableLinkage()

cir::GlobalLinkageKind CIRGenModule::getVTableLinkage ( const CXXRecordDecl rd)

◆ getVTables()

CIRGenVTables & clang::CIRGen::CIRGenModule::getVTables ( )
inline

Definition at line 255 of file CIRGenModule.h.

Referenced by emitGlobalDefinition().

◆ handleCXXStaticMemberVarInstantiation()

void CIRGenModule::handleCXXStaticMemberVarInstantiation ( VarDecl vd)

◆ mayBeEmittedEagerly()

bool CIRGenModule::mayBeEmittedEagerly ( const clang::ValueDecl d)

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 instantiations which may later be explicitly instantiated.

Definition at line 1653 of file CIRGenModule.cpp.

References errorNYI(), clang::ASTContext::getInlineVariableDefinitionKind(), clang::ASTContext::getTargetInfo(), clang::ValueDecl::getType(), clang::QualType::isConstantStorage(), clang::TargetInfo::isTLSSupported(), clang::TSK_ImplicitInstantiation, and clang::ASTContext::WeakUnknown.

Referenced by emitGlobal().

◆ maybeSetTrivialComdat()

void CIRGenModule::maybeSetTrivialComdat ( const clang::Decl d,
mlir::Operation *  op 
)

Definition at line 922 of file CIRGenModule.cpp.

References shouldBeInCOMDAT().

Referenced by emitGlobalFunctionDefinition(), and emitGlobalVarDefinition().

◆ mustBeEmitted()

bool CIRGenModule::mustBeEmitted ( const clang::ValueDecl d)

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

Definition at line 1636 of file CIRGenModule.cpp.

References clang::ASTContext::DeclMustBeEmitted(), getASTContext(), clang::SD_Static, and clang::SD_Thread.

Referenced by emitGlobal(), and emitTentativeDefinition().

◆ release()

void CIRGenModule::release ( )

Definition at line 2094 of file CIRGenModule.cpp.

References cir::MissingFeatures::cgmRelease(), and emitDeferred().

◆ replaceUsesOfNonProtoTypeWithRealFunction()

void CIRGenModule::replaceUsesOfNonProtoTypeWithRealFunction ( mlir::Operation *  old,
cir::FuncOp  newFn 
)

This function is called when we implement a function with no prototype, e.g.

"int foo() {}". If there are existing call uses of the old function in the module, this adjusts them to call the new function directly.

This is not just a cleanup: the always_inline pass requires direct calls to functions to be able to inline them. If there is a bitcast in the way, it won't inline them. Instcombine normally deletes these calls, but it isn't run at -O0.

Definition at line 1192 of file CIRGenModule.cpp.

References cir::CIRBaseBuilderTy::createCallOp(), errorNYI(), cir::MissingFeatures::opFuncExceptions(), cir::MissingFeatures::opFuncOperandBundles(), and cir::MissingFeatures::opFuncParameterAttributes().

Referenced by getOrCreateCIRFunction().

◆ setCommonAttributes()

void CIRGenModule::setCommonAttributes ( GlobalDecl  gd,
mlir::Operation *  op 
)

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 499 of file CIRGenModule.cpp.

References cir::MissingFeatures::defaultVisibility(), clang::GlobalDecl::getDecl(), cir::MissingFeatures::opGlobalUsedOrCompilerUsed(), and setGVProperties().

Referenced by emitAliasForGlobal().

◆ setDSOLocal() [1/2]

void CIRGenModule::setDSOLocal ( cir::CIRGlobalValueInterface  gv) const

Definition at line 1808 of file CIRGenModule.cpp.

References shouldAssumeDSOLocal().

◆ setDSOLocal() [2/2]

void CIRGenModule::setDSOLocal ( mlir::Operation *  op) const

◆ setFunctionAttributes()

void CIRGenModule::setFunctionAttributes ( GlobalDecl  gd,
cir::FuncOp  f,
bool  isIncompleteFunction,
bool  isThunk 
)

◆ setFunctionLinkage()

void clang::CIRGen::CIRGenModule::setFunctionLinkage ( GlobalDecl  gd,
cir::FuncOp  f 
)
inline

◆ setGlobalVisibility()

void CIRGenModule::setGlobalVisibility ( mlir::Operation *  op,
const NamedDecl d 
) const

Set the visibility for the given global.

Definition at line 1803 of file CIRGenModule.cpp.

References cir::MissingFeatures::opGlobalVisibility().

Referenced by setGVPropertiesAux().

◆ setGVProperties()

void CIRGenModule::setGVProperties ( mlir::Operation *  op,
const NamedDecl d 
) const

Set visibility, dllimport/dllexport and dso_local.

This must be called after dllimport/dllexport is set.

Definition at line 1817 of file CIRGenModule.cpp.

References cir::MissingFeatures::opGlobalDLLImportExport(), and setGVPropertiesAux().

Referenced by emitGlobalFunctionDefinition(), getOrCreateStaticVarDecl(), and setCommonAttributes().

◆ setGVPropertiesAux()

void CIRGenModule::setGVPropertiesAux ( mlir::Operation *  op,
const NamedDecl d 
) const

◆ setInitializer()

void CIRGenModule::setInitializer ( cir::GlobalOp &  op,
mlir::Attribute  value 
)
static

◆ setStaticLocalDeclAddress()

void clang::CIRGen::CIRGenModule::setStaticLocalDeclAddress ( const VarDecl d,
cir::GlobalOp  c 
)
inline

Definition at line 135 of file CIRGenModule.h.

References c, and staticLocalDeclMap.

Referenced by clang::CIRGen::CIRGenFunction::emitStaticVarDecl().

◆ shouldEmitRTTI()

bool clang::CIRGen::CIRGenModule::shouldEmitRTTI ( bool  forEH = false)
inline

Definition at line 304 of file CIRGenModule.h.

References getLangOpts(), and getTriple().

Referenced by getAddrOfRTTIDescriptor().

◆ supportsCOMDAT()

bool CIRGenModule::supportsCOMDAT ( ) const

◆ updateCompletedType()

void CIRGenModule::updateCompletedType ( const clang::TagDecl td)

◆ verifyModule()

bool CIRGenModule::verifyModule ( ) const

Definition at line 2149 of file CIRGenModule.cpp.

Member Data Documentation

◆ cgGlobalNames

llvm::StringMap<unsigned> clang::CIRGen::CIRGenModule::cgGlobalNames

Definition at line 156 of file CIRGenModule.h.

Referenced by getUniqueGlobalName().

◆ deferredDecls

std::map<llvm::StringRef, clang::GlobalDecl> clang::CIRGen::CIRGenModule::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.

Definition at line 268 of file CIRGenModule.h.

Referenced by emitGlobal(), emitTentativeDefinition(), and getOrCreateCIRFunction().

◆ deferredDeclsToEmit

std::vector<clang::GlobalDecl> clang::CIRGen::CIRGenModule::deferredDeclsToEmit

Definition at line 272 of file CIRGenModule.h.

Referenced by addDeferredDeclToEmit(), and emitDeferred().

◆ lastGlobalOp

mlir::Operation* clang::CIRGen::CIRGenModule::lastGlobalOp = nullptr

Handling globals

Definition at line 122 of file CIRGenModule.h.

Referenced by createGlobalOp().

◆ staticLocalDeclMap

llvm::DenseMap<const Decl *, cir::GlobalOp> clang::CIRGen::CIRGenModule::staticLocalDeclMap

Definition at line 127 of file CIRGenModule.h.

Referenced by getStaticLocalDeclAddress(), and setStaticLocalDeclAddress().


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