clang 22.0.0git
clang::CodeGen::CGDebugInfo Class Reference

This class gathers all debug information during compilation and is responsible for emitting to llvm globals or pass directly to the backend. More...

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

Public Member Functions

 CGDebugInfo (CodeGenModule &CGM)
 ~CGDebugInfo ()
void finalize ()
std::string remapDIPath (StringRef) const
 Remap a given path with the current debug prefix map.
void registerVLASizeExpression (QualType Ty, llvm::Metadata *SizeExpr)
 Register VLA size expression debug node with the qualified type.
void setLocation (SourceLocation Loc)
 Update the current source location.
SourceLocation getLocation () const
 Return the current source location.
void setInlinedAt (llvm::MDNode *InlinedAt)
 Update the current inline scope.
llvm::MDNode * getInlinedAt () const
llvm::DebugLoc SourceLocToDebugLoc (SourceLocation Loc)
void EmitLocation (CGBuilderTy &Builder, SourceLocation Loc)
 Emit metadata to indicate a change in line/column information in the source file.
QualType getFunctionType (const FunctionDecl *FD, QualType RetTy, const SmallVectorImpl< const VarDecl * > &Args)
void emitFunctionStart (GlobalDecl GD, SourceLocation Loc, SourceLocation ScopeLoc, QualType FnType, llvm::Function *Fn, bool CurFnIsThunk)
 Emit a call to llvm.dbg.function.start to indicate start of a new function.
void EmitInlineFunctionStart (CGBuilderTy &Builder, GlobalDecl GD)
 Start a new scope for an inlined function.
void EmitInlineFunctionEnd (CGBuilderTy &Builder)
 End an inlined function scope.
void EmitFunctionDecl (GlobalDecl GD, SourceLocation Loc, QualType FnType, llvm::Function *Fn=nullptr)
 Emit debug info for a function declaration.
void EmitFuncDeclForCallSite (llvm::CallBase *CallOrInvoke, QualType CalleeType, const FunctionDecl *CalleeDecl)
 Emit debug info for an extern function being called.
void EmitFunctionEnd (CGBuilderTy &Builder, llvm::Function *Fn)
 Constructs the debug code for exiting a function.
void EmitLexicalBlockStart (CGBuilderTy &Builder, SourceLocation Loc)
 Emit metadata to indicate the beginning of a new lexical block and push the block onto the stack.
void EmitLexicalBlockEnd (CGBuilderTy &Builder, SourceLocation Loc)
 Emit metadata to indicate the end of a new lexical block and pop the current block.
llvm::DILocalVariable * EmitDeclareOfAutoVariable (const VarDecl *Decl, llvm::Value *AI, CGBuilderTy &Builder, const bool UsePointerValue=false)
 Emit call to llvm.dbg.declare for an automatic variable declaration.
void EmitLabel (const LabelDecl *D, CGBuilderTy &Builder)
 Emit call to llvm.dbg.label for an label.
void EmitDeclareOfBlockDeclRefVariable (const VarDecl *variable, llvm::Value *storage, CGBuilderTy &Builder, const CGBlockInfo &blockInfo, llvm::Instruction *InsertPoint=nullptr)
 Emit call to llvm.dbg.declare for an imported variable declaration in a block.
llvm::DILocalVariable * EmitDeclareOfArgVariable (const VarDecl *Decl, llvm::Value *AI, unsigned ArgNo, CGBuilderTy &Builder, bool UsePointerValue=false)
 Emit call to llvm.dbg.declare for an argument variable declaration.
void EmitDeclareOfBlockLiteralArgVariable (const CGBlockInfo &block, StringRef Name, unsigned ArgNo, llvm::AllocaInst *LocalAddr, CGBuilderTy &Builder)
 Emit call to llvm.dbg.declare for the block-literal argument to a block invocation function.
void EmitGlobalVariable (llvm::GlobalVariable *GV, const VarDecl *Decl)
 Emit information about a global variable.
void EmitGlobalVariable (const ValueDecl *VD, const APValue &Init)
 Emit a constant global variable's debug info.
void EmitExternalVariable (llvm::GlobalVariable *GV, const VarDecl *Decl)
 Emit information about an external variable.
void EmitPseudoVariable (CGBuilderTy &Builder, llvm::Instruction *Value, QualType Ty)
 Emit a pseudo variable and debug info for an intermediate value if it does not correspond to a variable in the source code, so that a profiler can track more accurate usage of certain instructions of interest.
void EmitGlobalAlias (const llvm::GlobalValue *GV, const GlobalDecl Decl)
 Emit information about global variable alias.
void EmitUsingDirective (const UsingDirectiveDecl &UD)
 Emit C++ using directive.
void EmitExplicitCastType (QualType Ty)
 Emit the type explicitly casted to.
void EmitAndRetainType (QualType Ty)
 Emit the type even if it might not be used.
void EmitUsingShadowDecl (const UsingShadowDecl &USD)
 Emit a shadow decl brought in by a using or using-enum.
void EmitUsingDecl (const UsingDecl &UD)
 Emit C++ using declaration.
void EmitUsingEnumDecl (const UsingEnumDecl &UD)
 Emit C++ using-enum declaration.
void EmitImportDecl (const ImportDecl &ID)
 Emit an @import declaration.
void AddStringLiteralDebugInfo (llvm::GlobalVariable *GV, const StringLiteral *S)
 DebugInfo isn't attached to string literals by default.
llvm::DIImportedEntity * EmitNamespaceAlias (const NamespaceAliasDecl &NA)
 Emit C++ namespace alias.
llvm::DIType * getOrCreateRecordType (QualType Ty, SourceLocation L)
 Emit record type's standalone debug info.
llvm::DIType * getOrCreateInterfaceType (QualType Ty, SourceLocation Loc)
 Emit an Objective-C interface type standalone debug info.
llvm::DIType * getOrCreateStandaloneType (QualType Ty, SourceLocation Loc)
 Emit standalone debug info for a type.
void addHeapAllocSiteMetadata (llvm::CallBase *CallSite, QualType AllocatedTy, SourceLocation Loc)
 Add heapallocsite metadata for MSAllocator calls.
void completeType (const EnumDecl *ED)
void completeType (const RecordDecl *RD)
void completeRequiredType (const RecordDecl *RD)
void completeClassData (const RecordDecl *RD)
void completeClass (const RecordDecl *RD)
void completeTemplateDefinition (const ClassTemplateSpecializationDecl &SD)
void completeUnusedClass (const CXXRecordDecl &D)
llvm::DIMacro * CreateMacro (llvm::DIMacroFile *Parent, unsigned MType, SourceLocation LineLoc, StringRef Name, StringRef Value)
 Create debug info for a macro defined by a #define directive or a macro undefined by a #undef directive.
llvm::DIMacroFile * CreateTempMacroFile (llvm::DIMacroFile *Parent, SourceLocation LineLoc, SourceLocation FileLoc)
 Create debug info for a file referenced by an #include directive.
Param2DILocTy & getParamDbgMappings ()
ParamDecl2StmtTy & getCoroutineParameterMappings ()
llvm::DILocation * CreateTrapFailureMessageFor (llvm::DebugLoc TrapLocation, StringRef Category, StringRef FailureMsg)
 Create a debug location from TrapLocation that adds an artificial inline frame where the frame name is.
llvm::DILocation * CreateSyntheticInlineAt (llvm::DebugLoc Location, StringRef FuncName)
 Create a debug location from Location that adds an artificial inline frame where the frame name is FuncName.
void completeFunction ()
 Reset internal state.
void addInstToCurrentSourceAtom (llvm::Instruction *KeyInstruction, llvm::Value *Backup)
 Add KeyInstruction and an optional Backup instruction to the current atom group, created using ApplyAtomGroup.
void addInstToSpecificSourceAtom (llvm::Instruction *KeyInstruction, llvm::Value *Backup, uint64_t Atom)
 Add KeyInstruction and an optional Backup instruction to the atom group Atom.
void emitVTableSymbol (llvm::GlobalVariable *VTable, const CXXRecordDecl *RD)
 Emit symbol for debugger that holds the pointer to the vtable.
void setDwoId (uint64_t Signature)
 Module debugging: Support for building PCMs.
void setModuleMap (ModuleMap &MMap)
 When generating debug information for a clang module or precompiled header, this module map will be used to determine the module of origin of each Decl.
void setPCHDescriptor (ASTSourceDescriptor PCH)
 When generating debug information for a clang module or precompiled header, this module map will be used to determine the module of origin of each Decl.

Friends

class ApplyDebugLocation
class SaveAndRestoreLocation
class ApplyAtomGroup

Detailed Description

This class gathers all debug information during compilation and is responsible for emitting to llvm globals or pass directly to the backend.

Definition at line 59 of file CGDebugInfo.h.

Constructor & Destructor Documentation

◆ CGDebugInfo()

CGDebugInfo::CGDebugInfo ( CodeGenModule & CGM)

Definition at line 112 of file CGDebugInfo.cpp.

◆ ~CGDebugInfo()

CGDebugInfo::~CGDebugInfo ( )

Definition at line 119 of file CGDebugInfo.cpp.

Member Function Documentation

◆ addHeapAllocSiteMetadata()

void CGDebugInfo::addHeapAllocSiteMetadata ( llvm::CallBase * CallSite,
QualType AllocatedTy,
SourceLocation Loc )

Add heapallocsite metadata for MSAllocator calls.

Definition at line 2837 of file CGDebugInfo.cpp.

References clang::Type::isVoidType().

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

◆ addInstToCurrentSourceAtom()

void CGDebugInfo::addInstToCurrentSourceAtom ( llvm::Instruction * KeyInstruction,
llvm::Value * Backup )

Add KeyInstruction and an optional Backup instruction to the current atom group, created using ApplyAtomGroup.

Definition at line 154 of file CGDebugInfo.cpp.

References addInstToSpecificSourceAtom().

◆ addInstToSpecificSourceAtom()

void CGDebugInfo::addInstToSpecificSourceAtom ( llvm::Instruction * KeyInstruction,
llvm::Value * Backup,
uint64_t Atom )

Add KeyInstruction and an optional Backup instruction to the atom group Atom.

Definition at line 160 of file CGDebugInfo.cpp.

Referenced by addInstToCurrentSourceAtom().

◆ AddStringLiteralDebugInfo()

void CGDebugInfo::AddStringLiteralDebugInfo ( llvm::GlobalVariable * GV,
const StringLiteral * S )

DebugInfo isn't attached to string literals by default.

While certain aspects of debuginfo aren't useful for string literals (like a name), it's nice to be able to symbolize the line and column information. This is especially useful for sanitizers, as it allows symbolization of heap-buffer-overflows on constant strings.

Definition at line 6152 of file CGDebugInfo.cpp.

References clang::File, clang::StringLiteral::getStrTokenLoc(), clang::Expr::getType(), and clang::PresumedLoc::isValid().

Referenced by clang::CodeGen::CodeGenModule::GetAddrOfConstantStringFromLiteral().

◆ completeClass()

void CGDebugInfo::completeClass ( const RecordDecl * RD)

Definition at line 2927 of file CGDebugInfo.cpp.

References clang::cast(), and clang::CanQual< T >::getAsOpaquePtr().

Referenced by completeClassData().

◆ completeClassData()

void CGDebugInfo::completeClassData ( const RecordDecl * RD)

◆ completeFunction()

void CGDebugInfo::completeFunction ( )

Reset internal state.

Definition at line 192 of file CGDebugInfo.cpp.

◆ completeRequiredType()

void CGDebugInfo::completeRequiredType ( const RecordDecl * RD)

◆ completeTemplateDefinition()

void CGDebugInfo::completeTemplateDefinition ( const ClassTemplateSpecializationDecl & SD)

Definition at line 3922 of file CGDebugInfo.cpp.

References completeUnusedClass().

◆ completeType() [1/2]

void CGDebugInfo::completeType ( const EnumDecl * ED)

Definition at line 2852 of file CGDebugInfo.cpp.

References clang::cast(), and clang::CanQual< T >::getAsOpaquePtr().

◆ completeType() [2/2]

void CGDebugInfo::completeType ( const RecordDecl * RD)

Definition at line 2865 of file CGDebugInfo.cpp.

References completeRequiredType().

◆ completeUnusedClass()

void CGDebugInfo::completeUnusedClass ( const CXXRecordDecl & D)

◆ CreateMacro()

llvm::DIMacro * CGDebugInfo::CreateMacro ( llvm::DIMacroFile * Parent,
unsigned MType,
SourceLocation LineLoc,
StringRef Name,
StringRef Value )

Create debug info for a macro defined by a #define directive or a macro undefined by a #undef directive.

Definition at line 3793 of file CGDebugInfo.cpp.

References clang::SourceLocation::isInvalid(), and clang::Line.

◆ CreateSyntheticInlineAt()

llvm::DILocation * CGDebugInfo::CreateSyntheticInlineAt ( llvm::DebugLoc Location,
StringRef FuncName )

Create a debug location from Location that adds an artificial inline frame where the frame name is FuncName.

This is used to indiciate instructions that come from compiler instrumentation.

Definition at line 3808 of file CGDebugInfo.cpp.

Referenced by CreateTrapFailureMessageFor().

◆ CreateTempMacroFile()

llvm::DIMacroFile * CGDebugInfo::CreateTempMacroFile ( llvm::DIMacroFile * Parent,
SourceLocation LineLoc,
SourceLocation FileLoc )

Create debug info for a file referenced by an #include directive.

Definition at line 3800 of file CGDebugInfo.cpp.

References clang::SourceLocation::isInvalid(), and clang::Line.

◆ CreateTrapFailureMessageFor()

llvm::DILocation * CGDebugInfo::CreateTrapFailureMessageFor ( llvm::DebugLoc TrapLocation,
StringRef Category,
StringRef FailureMsg )

Create a debug location from TrapLocation that adds an artificial inline frame where the frame name is.

  • <Prefix>:<Category>:<FailureMsg>

<Prefix> is "__clang_trap_msg".

This is used to store failure reasons for traps.

Definition at line 3816 of file CGDebugInfo.cpp.

References ClangTrapPrefix, and CreateSyntheticInlineAt().

Referenced by clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(), and clang::CodeGen::CodeGenFunction::EmitTrapCheck().

◆ EmitAndRetainType()

void CGDebugInfo::EmitAndRetainType ( QualType Ty)

Emit the type even if it might not be used.

Definition at line 6378 of file CGDebugInfo.cpp.

◆ EmitDeclareOfArgVariable()

llvm::DILocalVariable * CGDebugInfo::EmitDeclareOfArgVariable ( const VarDecl * Decl,
llvm::Value * AI,
unsigned ArgNo,
CGBuilderTy & Builder,
bool UsePointerValue = false )

Emit call to llvm.dbg.declare for an argument variable declaration.

Definition at line 5450 of file CGDebugInfo.cpp.

◆ EmitDeclareOfAutoVariable()

llvm::DILocalVariable * CGDebugInfo::EmitDeclareOfAutoVariable ( const VarDecl * Decl,
llvm::Value * AI,
CGBuilderTy & Builder,
const bool UsePointerValue = false )

Emit call to llvm.dbg.declare for an automatic variable declaration.

Returns a pointer to the DILocalVariable associated with the llvm.dbg.declare, or nullptr otherwise.

Definition at line 5323 of file CGDebugInfo.cpp.

References clang::ValueDecl::getType(), and clang::Type::isReferenceType().

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

◆ EmitDeclareOfBlockDeclRefVariable()

void CGDebugInfo::EmitDeclareOfBlockDeclRefVariable ( const VarDecl * variable,
llvm::Value * storage,
CGBuilderTy & Builder,
const CGBlockInfo & blockInfo,
llvm::Instruction * InsertPoint = nullptr )

◆ EmitDeclareOfBlockLiteralArgVariable()

◆ EmitExplicitCastType()

void CGDebugInfo::EmitExplicitCastType ( QualType Ty)

Emit the type explicitly casted to.

Definition at line 6372 of file CGDebugInfo.cpp.

◆ EmitExternalVariable()

void CGDebugInfo::EmitExternalVariable ( llvm::GlobalVariable * GV,
const VarDecl * Decl )

◆ EmitFuncDeclForCallSite()

void CGDebugInfo::EmitFuncDeclForCallSite ( llvm::CallBase * CallOrInvoke,
QualType CalleeType,
const FunctionDecl * CalleeDecl )

Emit debug info for an extern function being called.

This is needed for call site debug info.

Definition at line 4834 of file CGDebugInfo.cpp.

References EmitFunctionDecl(), clang::Func, clang::Decl::getLocation(), clang::Decl::hasAttr(), clang::FunctionDecl::isInlined(), and clang::FunctionDecl::isStatic().

◆ EmitFunctionDecl()

void CGDebugInfo::EmitFunctionDecl ( GlobalDecl GD,
SourceLocation Loc,
QualType FnType,
llvm::Function * Fn = nullptr )

Emit debug info for a function declaration.

Fn is set only when a declaration for a debug call site gets created.

Definition at line 4761 of file CGDebugInfo.cpp.

References clang::CodeGen::Decl, clang::GlobalDecl::getDecl(), clang::isa(), clang::Decl::isImplicit(), clang::SourceLocation::isInvalid(), and true.

Referenced by clang::CodeGen::CodeGenModule::EmitExternalDeclaration(), and EmitFuncDeclForCallSite().

◆ EmitFunctionEnd()

void CGDebugInfo::EmitFunctionEnd ( CGBuilderTy & Builder,
llvm::Function * Fn )

Constructs the debug code for exiting a function.

Definition at line 4944 of file CGDebugInfo.cpp.

References EmitLocation().

Referenced by EmitInlineFunctionEnd().

◆ emitFunctionStart()

void CGDebugInfo::emitFunctionStart ( GlobalDecl GD,
SourceLocation Loc,
SourceLocation ScopeLoc,
QualType FnType,
llvm::Function * Fn,
bool CurFnIsThunk )

Emit a call to llvm.dbg.function.start to indicate start of a new function.

Parameters
LocThe location of the function header.
ScopeLocThe location of the function body.

Definition at line 4648 of file CGDebugInfo.cpp.

References clang::cast(), clang::CodeGen::Decl, clang::Decl::getCanonicalDecl(), clang::GlobalDecl::getDecl(), clang::GlobalDecl::getDynamicInitKind(), clang::Decl::hasAttr(), clang::isa(), clang::Decl::isImplicit(), clang::SourceLocation::isValid(), and clang::NoStub.

◆ EmitGlobalAlias()

void CGDebugInfo::EmitGlobalAlias ( const llvm::GlobalValue * GV,
const GlobalDecl Decl )

Emit information about global variable alias.

Definition at line 6111 of file CGDebugInfo.cpp.

References clang::cast(), clang::GlobalDecl::getCanonicalDecl(), clang::GlobalDecl::getDecl(), clang::Decl::getLocation(), and clang::Decl::hasAttr().

◆ EmitGlobalVariable() [1/2]

void CGDebugInfo::EmitGlobalVariable ( const ValueDecl * VD,
const APValue & Init )

◆ EmitGlobalVariable() [2/2]

void CGDebugInfo::EmitGlobalVariable ( llvm::GlobalVariable * GV,
const VarDecl * Decl )

◆ EmitImportDecl()

void CGDebugInfo::EmitImportDecl ( const ImportDecl & ID)

Emit an @import declaration.

Definition at line 6235 of file CGDebugInfo.cpp.

References clang::cast().

◆ EmitInlineFunctionEnd()

void CGDebugInfo::EmitInlineFunctionEnd ( CGBuilderTy & Builder)

End an inlined function scope.

Definition at line 4873 of file CGDebugInfo.cpp.

References EmitFunctionEnd(), getInlinedAt(), and setInlinedAt().

◆ EmitInlineFunctionStart()

void CGDebugInfo::EmitInlineFunctionStart ( CGBuilderTy & Builder,
GlobalDecl GD )

Start a new scope for an inlined function.

Definition at line 4858 of file CGDebugInfo.cpp.

References clang::cast(), EmitLocation(), clang::GlobalDecl::getDecl(), and setInlinedAt().

◆ EmitLabel()

void CGDebugInfo::EmitLabel ( const LabelDecl * D,
CGBuilderTy & Builder )

Emit call to llvm.dbg.label for an label.

Definition at line 5340 of file CGDebugInfo.cpp.

References clang::cast(), clang::Column, clang::Decl::getLocation(), clang::NamedDecl::getName(), clang::Decl::hasAttr(), and clang::Line.

◆ EmitLexicalBlockEnd()

void CGDebugInfo::EmitLexicalBlockEnd ( CGBuilderTy & Builder,
SourceLocation Loc )

Emit metadata to indicate the end of a new lexical block and pop the current block.

Definition at line 4931 of file CGDebugInfo.cpp.

References EmitLocation().

Referenced by clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolStmt(), and clang::CodeGen::CodeGenFunction::EmitObjCForCollectionStmt().

◆ EmitLexicalBlockStart()

void CGDebugInfo::EmitLexicalBlockStart ( CGBuilderTy & Builder,
SourceLocation Loc )

Emit metadata to indicate the beginning of a new lexical block and push the block onto the stack.

Definition at line 4914 of file CGDebugInfo.cpp.

References setLocation().

Referenced by clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolStmt(), and clang::CodeGen::CodeGenFunction::EmitObjCForCollectionStmt().

◆ EmitLocation()

void CGDebugInfo::EmitLocation ( CGBuilderTy & Builder,
SourceLocation Loc )

Emit metadata to indicate a change in line/column information in the source file.

If the location is invalid, the previous location will be reused.

Definition at line 4879 of file CGDebugInfo.cpp.

References setLocation().

Referenced by EmitFunctionEnd(), EmitInlineFunctionStart(), and EmitLexicalBlockEnd().

◆ EmitNamespaceAlias()

llvm::DIImportedEntity * CGDebugInfo::EmitNamespaceAlias ( const NamespaceAliasDecl & NA)

◆ EmitPseudoVariable()

void CGDebugInfo::EmitPseudoVariable ( CGBuilderTy & Builder,
llvm::Instruction * Value,
QualType Ty )

Emit a pseudo variable and debug info for an intermediate value if it does not correspond to a variable in the source code, so that a profiler can track more accurate usage of certain instructions of interest.

Definition at line 6070 of file CGDebugInfo.cpp.

References clang::CodeGen::Type.

◆ EmitUsingDecl()

void CGDebugInfo::EmitUsingDecl ( const UsingDecl & UD)

◆ EmitUsingDirective()

◆ EmitUsingEnumDecl()

void CGDebugInfo::EmitUsingEnumDecl ( const UsingEnumDecl & UD)

Emit C++ using-enum declaration.

Definition at line 6224 of file CGDebugInfo.cpp.

References EmitUsingShadowDecl(), clang::BaseUsingDecl::shadow_size(), and clang::BaseUsingDecl::shadows().

◆ EmitUsingShadowDecl()

void CGDebugInfo::EmitUsingShadowDecl ( const UsingShadowDecl & USD)

Emit a shadow decl brought in by a using or using-enum.

Definition at line 6189 of file CGDebugInfo.cpp.

References clang::cast(), clang::Decl::getDeclContext(), clang::Decl::getLocation(), clang::NamedDecl::getUnderlyingDecl(), and clang::Target.

Referenced by EmitUsingDecl(), and EmitUsingEnumDecl().

◆ emitVTableSymbol()

void CGDebugInfo::emitVTableSymbol ( llvm::GlobalVariable * VTable,
const CXXRecordDecl * RD )

Emit symbol for debugger that holds the pointer to the vtable.

Definition at line 2658 of file CGDebugInfo.cpp.

References clang::AS_private, clang::cast(), and getAccessFlag().

◆ finalize()

◆ getCoroutineParameterMappings()

ParamDecl2StmtTy & clang::CodeGen::CGDebugInfo::getCoroutineParameterMappings ( )
inline

Definition at line 641 of file CGDebugInfo.h.

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

◆ getFunctionType()

QualType CGDebugInfo::getFunctionType ( const FunctionDecl * FD,
QualType RetTy,
const SmallVectorImpl< const VarDecl * > & Args )

Definition at line 4635 of file CGDebugInfo.cpp.

References clang::CC_C, clang::Type::getAs(), and clang::ValueDecl::getType().

◆ getInlinedAt()

llvm::MDNode * clang::CodeGen::CGDebugInfo::getInlinedAt ( ) const
inline
Returns
the current inline scope.

Definition at line 478 of file CGDebugInfo.h.

Referenced by EmitInlineFunctionEnd().

◆ getLocation()

SourceLocation clang::CodeGen::CGDebugInfo::getLocation ( ) const
inline

Return the current source location.

This does not necessarily correspond to the IRBuilder's current DebugLoc.

Definition at line 471 of file CGDebugInfo.h.

◆ getOrCreateInterfaceType()

llvm::DIType * CGDebugInfo::getOrCreateInterfaceType ( QualType Ty,
SourceLocation Loc )

Emit an Objective-C interface type standalone debug info.

Definition at line 2821 of file CGDebugInfo.cpp.

References getOrCreateStandaloneType().

◆ getOrCreateRecordType()

llvm::DIType * CGDebugInfo::getOrCreateRecordType ( QualType Ty,
SourceLocation L )

Emit record type's standalone debug info.

Definition at line 2814 of file CGDebugInfo.cpp.

References clang::T.

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

◆ getOrCreateStandaloneType()

◆ getParamDbgMappings()

Param2DILocTy & clang::CodeGen::CGDebugInfo::getParamDbgMappings ( )
inline

Definition at line 640 of file CGDebugInfo.h.

◆ registerVLASizeExpression()

void clang::CodeGen::CGDebugInfo::registerVLASizeExpression ( QualType Ty,
llvm::Metadata * SizeExpr )
inline

Register VLA size expression debug node with the qualified type.

Definition at line 445 of file CGDebugInfo.h.

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

◆ remapDIPath()

std::string CGDebugInfo::remapDIPath ( StringRef Path) const

Remap a given path with the current debug prefix map.

Definition at line 617 of file CGDebugInfo.cpp.

◆ setDwoId()

void CGDebugInfo::setDwoId ( uint64_t Signature)

Module debugging: Support for building PCMs.

Set the main CU's DwoId field to Signature.

Definition at line 6290 of file CGDebugInfo.cpp.

◆ setInlinedAt()

void clang::CodeGen::CGDebugInfo::setInlinedAt ( llvm::MDNode * InlinedAt)
inline

Update the current inline scope.

All subsequent calls to EmitLocation will create a location with this inlinedAt field.

Definition at line 475 of file CGDebugInfo.h.

Referenced by EmitInlineFunctionEnd(), and EmitInlineFunctionStart().

◆ setLocation()

void CGDebugInfo::setLocation ( SourceLocation Loc)

Update the current source location.

If

  • loc is invalid it is ignored.

Definition at line 315 of file CGDebugInfo.cpp.

References clang::cast(), clang::isa(), clang::PresumedLoc::isInvalid(), clang::SourceLocation::isInvalid(), and SM.

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

◆ setModuleMap()

void clang::CodeGen::CGDebugInfo::setModuleMap ( ModuleMap & MMap)
inline

When generating debug information for a clang module or precompiled header, this module map will be used to determine the module of origin of each Decl.

Definition at line 457 of file CGDebugInfo.h.

◆ setPCHDescriptor()

void clang::CodeGen::CGDebugInfo::setPCHDescriptor ( ASTSourceDescriptor PCH)
inline

When generating debug information for a clang module or precompiled header, this module map will be used to determine the module of origin of each Decl.

Definition at line 462 of file CGDebugInfo.h.

References clang::PCH.

◆ SourceLocToDebugLoc()

llvm::DebugLoc CGDebugInfo::SourceLocToDebugLoc ( SourceLocation Loc)

Definition at line 6384 of file CGDebugInfo.cpp.

◆ ApplyAtomGroup

friend class ApplyAtomGroup
friend

Definition at line 62 of file CGDebugInfo.h.

References ApplyAtomGroup.

Referenced by ApplyAtomGroup.

◆ ApplyDebugLocation

friend class ApplyDebugLocation
friend

Definition at line 60 of file CGDebugInfo.h.

References ApplyDebugLocation.

Referenced by ApplyDebugLocation.

◆ SaveAndRestoreLocation

friend class SaveAndRestoreLocation
friend

Definition at line 61 of file CGDebugInfo.h.

References SaveAndRestoreLocation.

Referenced by SaveAndRestoreLocation.

Member Data Documentation

◆ CurrentAtom

uint64_t clang::CodeGen::CGDebugInfo::CurrentAtom = 0

Definition at line 190 of file CGDebugInfo.h.

◆ HighestEmittedAtom

uint64_t clang::CodeGen::CGDebugInfo::HighestEmittedAtom = 0

Definition at line 189 of file CGDebugInfo.h.

◆ NextAtom

uint64_t clang::CodeGen::CGDebugInfo::NextAtom = 1

Definition at line 188 of file CGDebugInfo.h.


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