LLVM  10.0.0svn
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
llvm::DwarfCompileUnit Class Referencefinal

#include "CodeGen/AsmPrinter/DwarfCompileUnit.h"

Inheritance diagram for llvm::DwarfCompileUnit:
Inheritance graph
[legend]
Collaboration diagram for llvm::DwarfCompileUnit:
Collaboration graph
[legend]

Classes

struct  BaseTypeRef
 
struct  GlobalExpr
 A pair of GlobalVariable and DIExpression. More...
 

Public Types

using InlinedEntity = DbgValueHistoryMap::InlinedEntity
 Find abstract variable associated with Var. More...
 

Public Member Functions

 DwarfCompileUnit (unsigned UID, const DICompileUnit *Node, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU)
 
bool hasRangeLists () const
 
unsigned getUniqueID () const
 
DwarfCompileUnitgetSkeleton () const
 
bool includeMinimalInlineScopes () const
 
void initStmtList ()
 
void applyStmtList (DIE &D)
 Apply the DW_AT_stmt_list from this compile unit to the specified DIE. More...
 
DIEgetOrCreateGlobalVariableDIE (const DIGlobalVariable *GV, ArrayRef< GlobalExpr > GlobalExprs)
 Get or create global variable DIE. More...
 
DIEgetOrCreateCommonBlock (const DICommonBlock *CB, ArrayRef< GlobalExpr > GlobalExprs)
 
void addLocationAttribute (DIE *ToDIE, const DIGlobalVariable *GV, ArrayRef< GlobalExpr > GlobalExprs)
 
void addLabelAddress (DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Label)
 addLabelAddress - Add a dwarf label attribute data and value using either DW_FORM_addr or DW_FORM_GNU_addr_index. More...
 
void addLocalLabelAddress (DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Label)
 addLocalLabelAddress - Add a dwarf label attribute data and value using DW_FORM_addr only. More...
 
DwarfCompileUnitgetCU () override
 
unsigned getOrCreateSourceID (const DIFile *File) override
 Look up the source ID for the given file. More...
 
void addImportedEntity (const DIImportedEntity *IE)
 
void addRange (RangeSpan Range)
 addRange - Add an address range to the list of ranges for this unit. More...
 
void attachLowHighPC (DIE &D, const MCSymbol *Begin, const MCSymbol *End)
 
DIEupdateSubprogramScopeDIE (const DISubprogram *SP)
 Find DIE for the given subprogram and attach appropriate DW_AT_low_pc and DW_AT_high_pc attributes. More...
 
void constructScopeDIE (LexicalScope *Scope, SmallVectorImpl< DIE *> &FinalChildren)
 
void addScopeRangeList (DIE &ScopeDIE, SmallVector< RangeSpan, 2 > Range)
 A helper function to construct a RangeSpanList for a given lexical scope. More...
 
void attachRangesOrLowHighPC (DIE &D, SmallVector< RangeSpan, 2 > Ranges)
 
void attachRangesOrLowHighPC (DIE &D, const SmallVectorImpl< InsnRange > &Ranges)
 
DIEconstructInlinedScopeDIE (LexicalScope *Scope)
 This scope represents inlined body of a function. More...
 
DIEconstructLexicalScopeDIE (LexicalScope *Scope)
 Construct new DW_TAG_lexical_block for this scope and attach DW_AT_low_pc/DW_AT_high_pc labels. More...
 
DIEconstructVariableDIE (DbgVariable &DV, bool Abstract=false)
 constructVariableDIE - Construct a DIE for the given DbgVariable. More...
 
DIEconstructVariableDIE (DbgVariable &DV, const LexicalScope &Scope, DIE *&ObjectPointer)
 
DIEconstructLabelDIE (DbgLabel &DL, const LexicalScope &Scope)
 Construct a DIE for the given DbgLabel. More...
 
DIEcreateScopeChildrenDIE (LexicalScope *Scope, SmallVectorImpl< DIE *> &Children, bool *HasNonScopeChildren=nullptr)
 A helper function to create children of a Scope DIE. More...
 
void createBaseTypeDIEs ()
 
DIEconstructSubprogramScopeDIE (const DISubprogram *Sub, LexicalScope *Scope)
 Construct a DIE for this subprogram scope. More...
 
DIEcreateAndAddScopeChildren (LexicalScope *Scope, DIE &ScopeDIE)
 
void constructAbstractSubprogramScopeDIE (LexicalScope *Scope)
 
dwarf::Tag getDwarf5OrGNUTag (dwarf::Tag Tag) const
 This takes a DWARF 5 tag and returns it or a GNU analog. More...
 
dwarf::Attribute getDwarf5OrGNUAttr (dwarf::Attribute Attr) const
 This takes a DWARF 5 attribute and returns it or a GNU analog. More...
 
dwarf::LocationAtom getDwarf5OrGNULocationAtom (dwarf::LocationAtom Loc) const
 This takes a DWARF 5 location atom and either returns it or a GNU analog. More...
 
DIEconstructCallSiteEntryDIE (DIE &ScopeDIE, const DISubprogram *CalleeSP, bool IsTail, const MCSymbol *PCAddr, const MCExpr *PCOffset, unsigned CallReg)
 Construct a call site entry DIE describing a call within Scope to a callee described by CalleeSP. More...
 
void constructCallSiteParmEntryDIEs (DIE &CallSiteDIE, SmallVector< DbgCallSiteParam, 4 > &Params)
 Construct call site parameter DIEs for the CallSiteDIE. More...
 
DIEconstructImportedEntityDIE (const DIImportedEntity *Module)
 Construct import_module DIE. More...
 
void finishSubprogramDefinition (const DISubprogram *SP)
 
void finishEntityDefinition (const DbgEntity *Entity)
 
DbgEntitygetExistingAbstractEntity (const DINode *Node)
 
void createAbstractEntity (const DINode *Node, LexicalScope *Scope)
 
void setSkeleton (DwarfCompileUnit &Skel)
 Set the skeleton unit associated with this unit. More...
 
unsigned getHeaderSize () const override
 Compute the size of a header for this unit, not including the initial length field. More...
 
unsigned getLength ()
 
void emitHeader (bool UseOffsets) override
 Emit the header for this unit, not including the initial length field. More...
 
void addAddrTableBase ()
 Add the DW_AT_addr_base attribute to the unit DIE. More...
 
MCSymbolgetLabelBegin () const
 
MCSymbolgetMacroLabelBegin () const
 
void addGlobalName (StringRef Name, const DIE &Die, const DIScope *Context) override
 Add a new global name to the compile unit. More...
 
void addGlobalNameForTypeUnit (StringRef Name, const DIScope *Context)
 Add a new global name present in a type unit to this compile unit. More...
 
void addGlobalType (const DIType *Ty, const DIE &Die, const DIScope *Context) override
 Add a new global type to the compile unit. More...
 
void addGlobalTypeUnitType (const DIType *Ty, const DIScope *Context)
 Add a new global type present in a type unit to this compile unit. More...
 
const StringMap< const DIE * > & getGlobalNames () const
 
const StringMap< const DIE * > & getGlobalTypes () const
 
void addVariableAddress (const DbgVariable &DV, DIE &Die, MachineLocation Location)
 Add DW_AT_location attribute for a DbgVariable based on provided MachineLocation. More...
 
void addAddress (DIE &Die, dwarf::Attribute Attribute, const MachineLocation &Location)
 Add an address attribute to a die based on the location provided. More...
 
void addComplexAddress (const DbgVariable &DV, DIE &Die, dwarf::Attribute Attribute, const MachineLocation &Location)
 Start with the address based on the location provided, and generate the DWARF information necessary to find the actual variable (navigating the extra location information encoded in the type) based on the starting location. More...
 
void addLocationList (DIE &Die, dwarf::Attribute Attribute, unsigned Index)
 Add a Dwarf loclistptr attribute data and value. More...
 
void applyVariableAttributes (const DbgVariable &Var, DIE &VariableDie)
 
void addExpr (DIELoc &Die, dwarf::Form Form, const MCExpr *Expr)
 Add a Dwarf expression attribute data and value. More...
 
void addAddressExpr (DIE &Die, dwarf::Attribute Attribute, const MCExpr *Expr)
 Add an attribute containing an address expression to Die. More...
 
void applySubprogramAttributesToDefinition (const DISubprogram *SP, DIE &SPDie)
 
void applyLabelAttributes (const DbgLabel &Label, DIE &LabelDie)
 
const SmallVectorImpl< RangeSpan > & getRanges () const
 getRanges - Get the list of ranges for this unit. More...
 
SmallVector< RangeSpan, 2 > takeRanges ()
 
void setBaseAddress (const MCSymbol *Base)
 
const MCSymbolgetBaseAddress () const
 
uint64_t getDWOId () const
 
void setDWOId (uint64_t DwoId)
 
bool hasDwarfPubSections () const
 
void addBaseTypeRef (DIEValueList &Die, int64_t Idx)
 
- Public Member Functions inherited from llvm::DwarfUnit
AsmPrintergetAsmPrinter () const
 
MCSymbolgetEndLabel () const
 
uint16_t getLanguage () const
 
const DICompileUnitgetCUNode () const
 
uint16_t getDwarfVersion () const
 
bool hasContent () const
 Return true if this compile unit has something to write out. More...
 
std::string getParentContextString (const DIScope *Context) const
 Get string containing language specific context for a global name. More...
 
DIEgetDIE (const DINode *D) const
 Returns the DIE map slot for the specified debug variable. More...
 
DIELocgetDIELoc ()
 Returns a fresh newly allocated DIELoc. More...
 
void insertDIE (const DINode *Desc, DIE *D)
 Insert DIE into the map. More...
 
void insertDIE (DIE *D)
 
void addFlag (DIE &Die, dwarf::Attribute Attribute)
 Add a flag that is true to the DIE. More...
 
void addUInt (DIEValueList &Die, dwarf::Attribute Attribute, Optional< dwarf::Form > Form, uint64_t Integer)
 Add an unsigned integer attribute data and value. More...
 
void addUInt (DIEValueList &Block, dwarf::Form Form, uint64_t Integer)
 
void addSInt (DIEValueList &Die, dwarf::Attribute Attribute, Optional< dwarf::Form > Form, int64_t Integer)
 Add an signed integer attribute data and value. More...
 
void addSInt (DIELoc &Die, Optional< dwarf::Form > Form, int64_t Integer)
 
void addString (DIE &Die, dwarf::Attribute Attribute, StringRef Str)
 Add a string attribute data and value. More...
 
DIEValueList::value_iterator addLabel (DIEValueList &Die, dwarf::Attribute Attribute, dwarf::Form Form, const MCSymbol *Label)
 Add a Dwarf label attribute data and value. More...
 
void addLabel (DIELoc &Die, dwarf::Form Form, const MCSymbol *Label)
 
void addSectionOffset (DIE &Die, dwarf::Attribute Attribute, uint64_t Integer)
 Add an offset into a section attribute data and value. More...
 
void addOpAddress (DIELoc &Die, const MCSymbol *Sym)
 Add a dwarf op address data and value using the form given and an op of either DW_FORM_addr or DW_FORM_GNU_addr_index. More...
 
void addLabelDelta (DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Hi, const MCSymbol *Lo)
 Add a label delta attribute data and value. More...
 
void addDIEEntry (DIE &Die, dwarf::Attribute Attribute, DIE &Entry)
 Add a DIE attribute data and value. More...
 
void addDIEEntry (DIE &Die, dwarf::Attribute Attribute, DIEEntry Entry)
 Add a DIE attribute data and value. More...
 
void addDIETypeSignature (DIE &Die, uint64_t Signature)
 Add a type's DW_AT_signature and set the declaration flag. More...
 
void addBlock (DIE &Die, dwarf::Attribute Attribute, DIELoc *Loc)
 Add block data. More...
 
void addBlock (DIE &Die, dwarf::Attribute Attribute, DIEBlock *Block)
 Add block data. More...
 
void addSourceLine (DIE &Die, unsigned Line, const DIFile *File)
 Add location information to specified debug information entry. More...
 
void addSourceLine (DIE &Die, const DILocalVariable *V)
 
void addSourceLine (DIE &Die, const DIGlobalVariable *G)
 
void addSourceLine (DIE &Die, const DISubprogram *SP)
 
void addSourceLine (DIE &Die, const DILabel *L)
 
void addSourceLine (DIE &Die, const DIType *Ty)
 
void addSourceLine (DIE &Die, const DIObjCProperty *Ty)
 
void addConstantValue (DIE &Die, const MachineOperand &MO, const DIType *Ty)
 Add constant value entry in variable DIE. More...
 
void addConstantValue (DIE &Die, const ConstantInt *CI, const DIType *Ty)
 
void addConstantValue (DIE &Die, const APInt &Val, const DIType *Ty)
 
void addConstantValue (DIE &Die, const APInt &Val, bool Unsigned)
 
void addConstantValue (DIE &Die, uint64_t Val, const DIType *Ty)
 
void addConstantValue (DIE &Die, bool Unsigned, uint64_t Val)
 
void addConstantFPValue (DIE &Die, const MachineOperand &MO)
 Add constant value entry in variable DIE. More...
 
void addConstantFPValue (DIE &Die, const ConstantFP *CFP)
 
void addLinkageName (DIE &Die, StringRef LinkageName)
 Add a linkage name, if it isn't empty. More...
 
void addTemplateParams (DIE &Buffer, DINodeArray TParams)
 Add template parameters in buffer. More...
 
void addThrownTypes (DIE &Die, DINodeArray ThrownTypes)
 Add thrown types. More...
 
void addType (DIE &Entity, const DIType *Ty, dwarf::Attribute Attribute=dwarf::DW_AT_type)
 Add a new type attribute to the specified entity. More...
 
DIEgetOrCreateNameSpace (const DINamespace *NS)
 
DIEgetOrCreateModule (const DIModule *M)
 
DIEgetOrCreateSubprogramDIE (const DISubprogram *SP, bool Minimal=false)
 
void applySubprogramAttributes (const DISubprogram *SP, DIE &SPDie, bool SkipSPAttributes=false)
 
DIEcreateTypeDIE (const DIScope *Context, DIE &ContextDIE, const DIType *Ty)
 Creates type DIE with specific context. More...
 
DIEgetOrCreateTypeDIE (const MDNode *TyNode)
 Find existing DIE or create new DIE for the given type. More...
 
DIEgetOrCreateContextDIE (const DIScope *Context)
 Get context owner's DIE. More...
 
void constructContainingTypeDIEs ()
 Construct DIEs for types that contain vtables. More...
 
void constructSubprogramArguments (DIE &Buffer, DITypeRefArray Args)
 Construct function argument DIEs. More...
 
DIEcreateAndAddDIE (unsigned Tag, DIE &Parent, const DINode *N=nullptr)
 Create a DIE with the given Tag, add the DIE to its parent, and call insertDIE if MD is not null. More...
 
bool useSegmentedStringOffsetsTable () const
 
void addStringOffsetsStart ()
 Add the DW_AT_str_offsets_base attribute to the unit DIE. More...
 
void addRnglistsBase ()
 Add the DW_AT_rnglists_base attribute to the unit DIE. More...
 
void addLoclistsBase ()
 Add the DW_AT_loclists_base attribute to the unit DIE. More...
 
void constructTypeDIE (DIE &Buffer, const DICompositeType *CTy)
 
DIE::value_iterator addSectionDelta (DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Hi, const MCSymbol *Lo)
 addSectionDelta - Add a label delta attribute data and value. More...
 
DIE::value_iterator addSectionLabel (DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Label, const MCSymbol *Sec)
 Add a Dwarf section label attribute data and value. More...
 
Optional< MD5::MD5ResultgetMD5AsBytes (const DIFile *File) const
 If the File has an MD5 checksum, return it as an MD5Result allocated in the MCContext. More...
 
DIEcreateTypeDIE (const DICompositeType *Ty)
 Get context owner's DIE. More...
 
- Public Member Functions inherited from llvm::DIEUnit
 DIEUnit (uint16_t Version, uint8_t AddrSize, dwarf::Tag UnitTag)
 
 DIEUnit (const DIEUnit &RHS)=delete
 
 DIEUnit (DIEUnit &&RHS)=delete
 
void operator= (const DIEUnit &RHS)=delete
 
void operator= (const DIEUnit &&RHS)=delete
 
void setSection (MCSection *Section)
 Set the section that this DIEUnit will be emitted into. More...
 
MCSectiongetSection () const
 Return the section that this DIEUnit will be emitted into. More...
 
void setDebugSectionOffset (unsigned O)
 
unsigned getDebugSectionOffset () const
 
void setLength (uint64_t L)
 
uint64_t getLength () const
 
uint16_t getDwarfVersion () const
 
uint16_t getAddressSize () const
 
DIEgetUnitDie ()
 
const DIEgetUnitDie () const
 

Public Attributes

std::vector< BaseTypeRefExprRefedBaseTypes
 

Additional Inherited Members

- Protected Member Functions inherited from llvm::DwarfUnit
 DwarfUnit (dwarf::Tag, const DICompileUnit *Node, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU)
 
bool applySubprogramDefinitionAttributes (const DISubprogram *SP, DIE &SPDie)
 
bool shareAcrossDWOCUs () const
 
bool isShareableAcrossCUs (const DINode *D) const
 Check whether the DIE for this MDNode can be shared across CUs. More...
 
 ~DwarfUnit ()
 
DIEgetOrCreateStaticMemberDIE (const DIDerivedType *DT)
 Create new static data member DIE. More...
 
void emitCommonHeader (bool UseOffsets, dwarf::UnitType UT)
 Emit the common part of the header for this unit. More...
 
- Protected Member Functions inherited from llvm::DIEUnit
virtual ~DIEUnit ()=default
 The size in bytes of an address for this unit. More...
 
- Protected Attributes inherited from llvm::DwarfUnit
const DICompileUnitCUNode
 MDNode for the compile unit. More...
 
BumpPtrAllocator DIEValueAllocator
 
AsmPrinterAsm
 Target of Dwarf emission. More...
 
MCSymbolEndLabel = nullptr
 Emitted at the end of the CU and used to compute the CU Length field. More...
 
DwarfDebugDD
 
DwarfFileDU
 
DIEIndexTyDie
 An anonymous type for index type. Owned by DIEUnit. More...
 
DenseMap< const MDNode *, DIE * > MDNodeToDieMap
 Tracks the mapping of unit level debug information variables to debug information entries. More...
 
std::vector< DIEBlock * > DIEBlocks
 A list of all the DIEBlocks in use. More...
 
std::vector< DIELoc * > DIELocs
 A list of all the DIELocs in use. More...
 
DenseMap< DIE *, const DINode * > ContainingTypeMap
 This map is used to keep track of subprogram DIEs that need DW_AT_containing_type attribute. More...
 

Detailed Description

Definition at line 43 of file DwarfCompileUnit.h.

Member Typedef Documentation

◆ InlinedEntity

Find abstract variable associated with Var.

Definition at line 267 of file DwarfCompileUnit.h.

Constructor & Destructor Documentation

◆ DwarfCompileUnit()

DwarfCompileUnit::DwarfCompileUnit ( unsigned  UID,
const DICompileUnit Node,
AsmPrinter A,
DwarfDebug DW,
DwarfFile DWU 
)

Definition at line 55 of file DwarfCompileUnit.cpp.

Member Function Documentation

◆ addAddress()

void DwarfCompileUnit::addAddress ( DIE Die,
dwarf::Attribute  Attribute,
const MachineLocation Location 
)

◆ addAddressExpr()

void DwarfCompileUnit::addAddressExpr ( DIE Die,
dwarf::Attribute  Attribute,
const MCExpr Expr 
)

Add an attribute containing an address expression to Die.

Definition at line 1260 of file DwarfCompileUnit.cpp.

References llvm::DIEValueList::addValue(), and llvm::DwarfUnit::DIEValueAllocator.

Referenced by constructCallSiteEntryDIE(), and getGlobalTypes().

◆ addAddrTableBase()

void DwarfCompileUnit::addAddrTableBase ( )

◆ addBaseTypeRef()

void DwarfCompileUnit::addBaseTypeRef ( DIEValueList Die,
int64_t  Idx 
)

Definition at line 1296 of file DwarfCompileUnit.cpp.

References llvm::DIEValueList::addValue(), and llvm::DwarfUnit::DIEValueAllocator.

Referenced by setDWOId().

◆ addComplexAddress()

void DwarfCompileUnit::addComplexAddress ( const DbgVariable DV,
DIE Die,
dwarf::Attribute  Attribute,
const MachineLocation Location 
)

Start with the address based on the location provided, and generate the DWARF information necessary to find the actual variable (navigating the extra location information encoded in the type) based on the starting location.

Start with the address based on the location provided, and generate the DWARF information necessary to find the actual variable given the extra address information encoded in the DbgVariable, starting from the starting location.

Add the DWARF information to the die.

Definition at line 1194 of file DwarfCompileUnit.cpp.

References llvm::DwarfUnit::addBlock(), llvm::DwarfExpression::addEntryValueExpression(), llvm::DwarfExpression::addExpression(), llvm::DwarfExpression::addFragmentOffset(), llvm::DwarfExpression::addMachineRegExpression(), llvm::DwarfUnit::Asm, llvm::DwarfUnit::DIEValueAllocator, llvm::DIEDwarfExpression::finalize(), llvm::MachineLocation::getReg(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::DbgVariable::getSingleExpression(), llvm::MachineFunction::getSubtarget(), llvm::DIExpression::isEntryValue(), llvm::MachineLocation::isIndirect(), llvm::AsmPrinter::MF, llvm::DwarfExpression::setEntryValueFlag(), llvm::DwarfExpression::setMemoryLocationKind(), and TRI.

Referenced by addVariableAddress(), and getGlobalTypes().

◆ addExpr()

void DwarfCompileUnit::addExpr ( DIELoc Die,
dwarf::Form  Form,
const MCExpr Expr 
)

Add a Dwarf expression attribute data and value.

Definition at line 1255 of file DwarfCompileUnit.cpp.

References llvm::DIEValueList::addValue(), and llvm::DwarfUnit::DIEValueAllocator.

Referenced by addLocationAttribute(), and getGlobalTypes().

◆ addGlobalName()

void DwarfCompileUnit::addGlobalName ( StringRef  Name,
const DIE Die,
const DIScope Context 
)
overridevirtual

Add a new global name to the compile unit.

addGlobalName - Add a new global name to the compile unit.

Implements llvm::DwarfUnit.

Definition at line 1123 of file DwarfCompileUnit.cpp.

References llvm::DwarfUnit::getParentContextString(), hasDwarfPubSections(), and llvm::StringRef::str().

Referenced by applySubprogramAttributesToDefinition(), getMacroLabelBegin(), getOrCreateCommonBlock(), and getOrCreateGlobalVariableDIE().

◆ addGlobalNameForTypeUnit()

void DwarfCompileUnit::addGlobalNameForTypeUnit ( StringRef  Name,
const DIScope Context 
)

Add a new global name present in a type unit to this compile unit.

Definition at line 1131 of file DwarfCompileUnit.cpp.

References llvm::DwarfUnit::getParentContextString(), llvm::DIEUnit::getUnitDie(), hasDwarfPubSections(), and llvm::StringRef::str().

Referenced by llvm::DwarfTypeUnit::addGlobalName(), and getMacroLabelBegin().

◆ addGlobalType()

void DwarfCompileUnit::addGlobalType ( const DIType Ty,
const DIE Die,
const DIScope Context 
)
overridevirtual

Add a new global type to the compile unit.

Add a new global type to the unit.

Implements llvm::DwarfUnit.

Definition at line 1144 of file DwarfCompileUnit.cpp.

References llvm::DIType::getName(), llvm::DwarfUnit::getParentContextString(), hasDwarfPubSections(), and llvm::StringRef::str().

Referenced by getMacroLabelBegin().

◆ addGlobalTypeUnitType()

void DwarfCompileUnit::addGlobalTypeUnitType ( const DIType Ty,
const DIScope Context 
)

Add a new global type present in a type unit to this compile unit.

Definition at line 1152 of file DwarfCompileUnit.cpp.

References llvm::DIType::getName(), llvm::DwarfUnit::getParentContextString(), llvm::DIEUnit::getUnitDie(), hasDwarfPubSections(), and llvm::StringRef::str().

Referenced by llvm::DwarfTypeUnit::addGlobalType(), and getMacroLabelBegin().

◆ addImportedEntity()

void llvm::DwarfCompileUnit::addImportedEntity ( const DIImportedEntity IE)
inline

◆ addLabelAddress()

void DwarfCompileUnit::addLabelAddress ( DIE Die,
dwarf::Attribute  Attribute,
const MCSymbol Label 
)

addLabelAddress - Add a dwarf label attribute data and value using either DW_FORM_addr or DW_FORM_GNU_addr_index.

addLabelAddress - Add a dwarf label attribute data and value using DW_FORM_addr or DW_FORM_GNU_addr_index.

Definition at line 65 of file DwarfCompileUnit.cpp.

References llvm::DwarfDebug::addArangeLabel(), addLocalLabelAddress(), llvm::DIEValueList::addValue(), llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, llvm::DwarfDebug::getAddressPool(), llvm::DwarfDebug::getDwarfVersion(), llvm::AddressPool::getIndex(), and llvm::DwarfDebug::useSplitDwarf().

Referenced by constructCallSiteEntryDIE(), and finishEntityDefinition().

◆ addLocalLabelAddress()

void DwarfCompileUnit::addLocalLabelAddress ( DIE Die,
dwarf::Attribute  Attribute,
const MCSymbol Label 
)

addLocalLabelAddress - Add a dwarf label attribute data and value using DW_FORM_addr only.

Definition at line 85 of file DwarfCompileUnit.cpp.

References llvm::DwarfDebug::addArangeLabel(), llvm::DIEValueList::addValue(), llvm::DwarfUnit::DD, and llvm::DwarfUnit::DIEValueAllocator.

Referenced by addLabelAddress().

◆ addLocationAttribute()

void DwarfCompileUnit::addLocationAttribute ( DIE ToDIE,
const DIGlobalVariable GV,
ArrayRef< GlobalExpr GlobalExprs 
)

◆ addLocationList()

void DwarfCompileUnit::addLocationList ( DIE Die,
dwarf::Attribute  Attribute,
unsigned  Index 
)

Add a Dwarf loclistptr attribute data and value.

Definition at line 1221 of file DwarfCompileUnit.cpp.

References llvm::DIEValueList::addValue(), llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, and llvm::DwarfDebug::getDwarfVersion().

Referenced by constructLabelDIE(), and getGlobalTypes().

◆ addRange()

void DwarfCompileUnit::addRange ( RangeSpan  Range)

addRange - Add an address range to the list of ranges for this unit.

Definition at line 321 of file DwarfCompileUnit.cpp.

References llvm::DwarfUnit::DD, llvm::RangeSpan::End, llvm::DwarfDebug::getPrevCU(), llvm::MCSymbol::getSection(), and llvm::DwarfDebug::setPrevCU().

Referenced by addImportedEntity(), and addScopeRangeList().

◆ addScopeRangeList()

void DwarfCompileUnit::addScopeRangeList ( DIE ScopeDIE,
SmallVector< RangeSpan, 2 >  Range 
)

◆ addVariableAddress()

void DwarfCompileUnit::addVariableAddress ( const DbgVariable DV,
DIE Die,
MachineLocation  Location 
)

Add DW_AT_location attribute for a DbgVariable based on provided MachineLocation.

Definition at line 1164 of file DwarfCompileUnit.cpp.

References addAddress(), addComplexAddress(), and llvm::DbgVariable::hasComplexAddress().

Referenced by constructLabelDIE(), and getGlobalTypes().

◆ applyLabelAttributes()

void DwarfCompileUnit::applyLabelAttributes ( const DbgLabel Label,
DIE LabelDie 
)

◆ applyStmtList()

void DwarfCompileUnit::applyStmtList ( DIE D)

Apply the DW_AT_stmt_list from this compile unit to the specified DIE.

Definition at line 362 of file DwarfCompileUnit.cpp.

References llvm::DIEValueList::addValue(), and llvm::DwarfUnit::DIEValueAllocator.

Referenced by getSkeleton().

◆ applySubprogramAttributesToDefinition()

void DwarfCompileUnit::applySubprogramAttributesToDefinition ( const DISubprogram SP,
DIE SPDie 
)

◆ applyVariableAttributes()

void DwarfCompileUnit::applyVariableAttributes ( const DbgVariable Var,
DIE VariableDie 
)

◆ attachLowHighPC()

void DwarfCompileUnit::attachLowHighPC ( DIE D,
const MCSymbol Begin,
const MCSymbol End 
)

◆ attachRangesOrLowHighPC() [1/2]

void DwarfCompileUnit::attachRangesOrLowHighPC ( DIE D,
SmallVector< RangeSpan, 2 >  Ranges 
)

◆ attachRangesOrLowHighPC() [2/2]

void DwarfCompileUnit::attachRangesOrLowHighPC ( DIE D,
const SmallVectorImpl< InsnRange > &  Ranges 
)

◆ constructAbstractSubprogramScopeDIE()

void DwarfCompileUnit::constructAbstractSubprogramScopeDIE ( LexicalScope Scope)

◆ constructCallSiteEntryDIE()

DIE & DwarfCompileUnit::constructCallSiteEntryDIE ( DIE ScopeDIE,
const DISubprogram CalleeSP,
bool  IsTail,
const MCSymbol PCAddr,
const MCExpr PCOffset,
unsigned  CallReg 
)

Construct a call site entry DIE describing a call within Scope to a callee described by CalleeSP.

IsTail specifies whether the call is a tail call. PCAddr (used for GDB + DWARF 4 tuning) points to the PC value after the call instruction. PCOffset (used for cases other than GDB + DWARF 4 tuning) must be non-zero for non-tail calls (in the case of non-gdb tuning, since for GDB + DWARF 5 tuning we still generate PC info for tail calls) or be the function-local offset to PC value after the call instruction. CallReg is a register location for an indirect call. For direct calls the CallReg is set to 0.

Definition at line 942 of file DwarfCompileUnit.cpp.

References addAddress(), addAddressExpr(), llvm::DwarfUnit::addDIEEntry(), llvm::DwarfUnit::addFlag(), addLabelAddress(), assert(), llvm::DwarfUnit::createAndAddDIE(), llvm::DwarfUnit::DD, getDwarf5OrGNUAttr(), getDwarf5OrGNUTag(), llvm::DwarfDebug::getDwarfVersion(), llvm::DwarfUnit::getOrCreateSubprogramDIE(), and llvm::DwarfDebug::tuneForGDB().

Referenced by collectCallSiteParameters().

◆ constructCallSiteParmEntryDIEs()

void DwarfCompileUnit::constructCallSiteParmEntryDIEs ( DIE CallSiteDIE,
SmallVector< DbgCallSiteParam, 4 > &  Params 
)

Construct call site parameter DIEs for the CallSiteDIE.

The Params were collected by the collectCallSiteParameters. Note: The order of parameters does not matter, since debuggers recognize call site parameters by the DW_AT_location attribute.

Definition at line 977 of file DwarfCompileUnit.cpp.

References addAddress(), llvm::DwarfUnit::addBlock(), llvm::DIE::addChild(), llvm::DwarfUnit::Asm, llvm::DwarfUnit::DIEValueAllocator, llvm::DwarfDebug::emitDebugLocValue(), llvm::DIEDwarfExpression::finalize(), llvm::DIE::get(), getDwarf5OrGNUAttr(), getDwarf5OrGNUTag(), llvm::DwarfUnit::insertDIE(), and llvm::DwarfExpression::setCallSiteParamValueFlag().

Referenced by collectCallSiteParameters().

◆ constructImportedEntityDIE()

DIE * DwarfCompileUnit::constructImportedEntityDIE ( const DIImportedEntity Module)

◆ constructInlinedScopeDIE()

DIE * DwarfCompileUnit::constructInlinedScopeDIE ( LexicalScope Scope)

◆ constructLabelDIE()

DIE * DwarfCompileUnit::constructLabelDIE ( DbgLabel DL,
const LexicalScope Scope 
)

Construct a DIE for the given DbgLabel.

Definition at line 577 of file DwarfCompileUnit.cpp.

References llvm::DwarfUnit::addBlock(), llvm::DwarfUnit::addConstantFPValue(), llvm::DwarfUnit::addConstantValue(), llvm::DwarfExpression::addExpression(), llvm::DwarfExpression::addFragmentOffset(), addLocationList(), llvm::DwarfExpression::addMachineRegExpression(), llvm::DwarfUnit::addOpAddress(), llvm::DwarfUnit::addUInt(), llvm::DwarfExpression::addUnsignedConstant(), addVariableAddress(), llvm::SmallVectorImpl< T >::append(), llvm::DIExpression::appendOffset(), applyLabelAttributes(), applyVariableAttributes(), llvm::DwarfUnit::Asm, llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, llvm::DIExpression::elements_begin(), llvm::DIExpression::elements_end(), llvm::DIExpression::extractAddressClass(), llvm::DIEDwarfExpression::finalize(), llvm::DIE::get(), llvm::DbgVariable::getDebugLocListIndex(), llvm::DbgVariable::getFrameIndexExprs(), llvm::TargetFrameLowering::getFrameIndexReference(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::AsmPrinter::getFunctionFrameSymbol(), llvm::DbgLabel::getLabel(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::DbgVariable::getSingleExpression(), llvm::MachineFunction::getSubtarget(), llvm::DbgVariable::getTag(), llvm::DbgLabel::getTag(), llvm::TargetMachine::getTargetTriple(), llvm::DbgVariable::getType(), llvm::DbgVariable::getValueLoc(), llvm::DbgVariable::getVariable(), llvm::DbgVariable::hasFrameIndexExprs(), llvm::DwarfUnit::insertDIE(), llvm::LexicalScope::isAbstractScope(), llvm::Triple::isNVPTX(), llvm::AsmPrinter::MF, llvm::DbgEntity::setDIE(), llvm::DwarfExpression::setMemoryLocationKind(), llvm::DwarfExpression::TagOffset, llvm::AsmPrinter::TM, and llvm::DwarfDebug::tuneForGDB().

Referenced by createScopeChildrenDIE().

◆ constructLexicalScopeDIE()

DIE * DwarfCompileUnit::constructLexicalScopeDIE ( LexicalScope Scope)

Construct new DW_TAG_lexical_block for this scope and attach DW_AT_low_pc/DW_AT_high_pc labels.

Definition at line 557 of file DwarfCompileUnit.cpp.

References attachRangesOrLowHighPC(), llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, llvm::DIE::get(), llvm::LexicalScope::getRanges(), llvm::LexicalScope::isAbstractScope(), and llvm::DwarfDebug::isLexicalScopeDIENull().

Referenced by constructScopeDIE().

◆ constructScopeDIE()

void DwarfCompileUnit::constructScopeDIE ( LexicalScope Scope,
SmallVectorImpl< DIE *> &  FinalChildren 
)

◆ constructSubprogramScopeDIE()

DIE & DwarfCompileUnit::constructSubprogramScopeDIE ( const DISubprogram Sub,
LexicalScope Scope 
)

◆ constructVariableDIE() [1/2]

DIE * DwarfCompileUnit::constructVariableDIE ( DbgVariable DV,
bool  Abstract = false 
)

constructVariableDIE - Construct a DIE for the given DbgVariable.

Definition at line 571 of file DwarfCompileUnit.cpp.

References D, and llvm::DbgEntity::setDIE().

Referenced by constructVariableDIE(), and createScopeChildrenDIE().

◆ constructVariableDIE() [2/2]

DIE * DwarfCompileUnit::constructVariableDIE ( DbgVariable DV,
const LexicalScope Scope,
DIE *&  ObjectPointer 
)

◆ createAbstractEntity()

void DwarfCompileUnit::createAbstractEntity ( const DINode Node,
LexicalScope Scope 
)

Definition at line 1075 of file DwarfCompileUnit.cpp.

◆ createAndAddScopeChildren()

DIE * DwarfCompileUnit::createAndAddScopeChildren ( LexicalScope Scope,
DIE ScopeDIE 
)

◆ createBaseTypeDIEs()

void DwarfCompileUnit::createBaseTypeDIEs ( )

◆ createScopeChildrenDIE()

DIE * DwarfCompileUnit::createScopeChildrenDIE ( LexicalScope Scope,
SmallVectorImpl< DIE *> &  Children,
bool HasNonScopeChildren = nullptr 
)

◆ emitHeader()

void DwarfCompileUnit::emitHeader ( bool  UseOffsets)
overridevirtual

◆ finishEntityDefinition()

void DwarfCompileUnit::finishEntityDefinition ( const DbgEntity Entity)

◆ finishSubprogramDefinition()

void DwarfCompileUnit::finishSubprogramDefinition ( const DISubprogram SP)

◆ getBaseAddress()

const MCSymbol* llvm::DwarfCompileUnit::getBaseAddress ( ) const
inline

Definition at line 353 of file DwarfCompileUnit.h.

Referenced by emitRangeList().

◆ getCU()

DwarfCompileUnit& llvm::DwarfCompileUnit::getCU ( )
inlineoverridevirtual

Implements llvm::DwarfUnit.

Definition at line 160 of file DwarfCompileUnit.h.

References File, and getOrCreateSourceID().

Referenced by getOrCreateCommonBlock().

◆ getDwarf5OrGNUAttr()

dwarf::Attribute DwarfCompileUnit::getDwarf5OrGNUAttr ( dwarf::Attribute  Attr) const

This takes a DWARF 5 attribute and returns it or a GNU analog.

Definition at line 909 of file DwarfCompileUnit.cpp.

References llvm::DwarfUnit::DD, llvm_unreachable, and useGNUAnalogForDwarf5Feature().

Referenced by collectCallSiteParameters(), constructCallSiteEntryDIE(), and constructCallSiteParmEntryDIEs().

◆ getDwarf5OrGNULocationAtom()

dwarf::LocationAtom DwarfCompileUnit::getDwarf5OrGNULocationAtom ( dwarf::LocationAtom  Loc) const

This takes a DWARF 5 location atom and either returns it or a GNU analog.

Definition at line 931 of file DwarfCompileUnit.cpp.

References llvm::DwarfUnit::DD, llvm_unreachable, and useGNUAnalogForDwarf5Feature().

◆ getDwarf5OrGNUTag()

dwarf::Tag DwarfCompileUnit::getDwarf5OrGNUTag ( dwarf::Tag  Tag) const

This takes a DWARF 5 tag and returns it or a GNU analog.

Definition at line 895 of file DwarfCompileUnit.cpp.

References llvm::DwarfUnit::DD, llvm_unreachable, llvm::Tag, and useGNUAnalogForDwarf5Feature().

Referenced by constructCallSiteEntryDIE(), and constructCallSiteParmEntryDIEs().

◆ getDWOId()

uint64_t llvm::DwarfCompileUnit::getDWOId ( ) const
inline

Definition at line 355 of file DwarfCompileUnit.h.

Referenced by emitHeader().

◆ getExistingAbstractEntity()

DbgEntity * DwarfCompileUnit::getExistingAbstractEntity ( const DINode Node)

Definition at line 1067 of file DwarfCompileUnit.cpp.

Referenced by finishEntityDefinition().

◆ getGlobalNames()

const StringMap<const DIE *>& llvm::DwarfCompileUnit::getGlobalNames ( ) const
inline

Definition at line 314 of file DwarfCompileUnit.h.

Referenced by computeIndexValue().

◆ getGlobalTypes()

const StringMap<const DIE *>& llvm::DwarfCompileUnit::getGlobalTypes ( ) const
inline

◆ getHeaderSize()

unsigned llvm::DwarfCompileUnit::getHeaderSize ( ) const
inlineoverridevirtual

Compute the size of a header for this unit, not including the initial length field.

Reimplemented from llvm::DwarfUnit.

Definition at line 274 of file DwarfCompileUnit.h.

References llvm::DwarfUnit::DD, llvm::DwarfDebug::getDwarfVersion(), llvm::DwarfUnit::getHeaderSize(), and llvm::DwarfDebug::useSplitDwarf().

Referenced by getLength().

◆ getLabelBegin()

MCSymbol* llvm::DwarfCompileUnit::getLabelBegin ( ) const
inline

Definition at line 291 of file DwarfCompileUnit.h.

References assert(), and llvm::DIEUnit::getSection().

Referenced by computeIndexValue().

◆ getLength()

unsigned llvm::DwarfCompileUnit::getLength ( )
inline

◆ getMacroLabelBegin()

MCSymbol* llvm::DwarfCompileUnit::getMacroLabelBegin ( ) const
inline

◆ getOrCreateCommonBlock()

DIE * DwarfCompileUnit::getOrCreateCommonBlock ( const DICommonBlock CB,
ArrayRef< GlobalExpr GlobalExprs 
)

◆ getOrCreateGlobalVariableDIE()

DIE * DwarfCompileUnit::getOrCreateGlobalVariableDIE ( const DIGlobalVariable GV,
ArrayRef< GlobalExpr GlobalExprs 
)

◆ getOrCreateSourceID()

unsigned DwarfCompileUnit::getOrCreateSourceID ( const DIFile File)
overridevirtual

Look up the source ID for the given file.

If none currently exists, create a new ID and insert it in the line table.

Implements llvm::DwarfUnit.

Definition at line 99 of file DwarfCompileUnit.cpp.

References llvm::DwarfUnit::Asm, llvm::DIScope::getDirectory(), llvm::DIScope::getFilename(), llvm::DwarfUnit::getMD5AsBytes(), llvm::DIScope::getSource(), getUniqueID(), llvm::None, and llvm::AsmPrinter::OutStreamer.

Referenced by constructInlinedScopeDIE(), emitDebugRangesImpl(), getCU(), and llvm::DwarfUnit::getMD5AsBytes().

◆ getRanges()

const SmallVectorImpl<RangeSpan>& llvm::DwarfCompileUnit::getRanges ( ) const
inline

getRanges - Get the list of ranges for this unit.

Definition at line 349 of file DwarfCompileUnit.h.

Referenced by llvm::DwarfDebug::beginModule().

◆ getSkeleton()

DwarfCompileUnit* llvm::DwarfCompileUnit::getSkeleton ( ) const
inline

◆ getUniqueID()

unsigned llvm::DwarfCompileUnit::getUniqueID ( ) const
inline

◆ hasDwarfPubSections()

bool DwarfCompileUnit::hasDwarfPubSections ( ) const

◆ hasRangeLists()

bool llvm::DwarfCompileUnit::hasRangeLists ( ) const
inline

Definition at line 109 of file DwarfCompileUnit.h.

◆ includeMinimalInlineScopes()

bool DwarfCompileUnit::includeMinimalInlineScopes ( ) const

◆ initStmtList()

void DwarfCompileUnit::initStmtList ( )

◆ setBaseAddress()

void llvm::DwarfCompileUnit::setBaseAddress ( const MCSymbol Base)
inline

Definition at line 352 of file DwarfCompileUnit.h.

◆ setDWOId()

void llvm::DwarfCompileUnit::setDWOId ( uint64_t  DwoId)
inline

Definition at line 356 of file DwarfCompileUnit.h.

References addBaseTypeRef(), and hasDwarfPubSections().

Referenced by llvm::DwarfDebug::beginModule().

◆ setSkeleton()

void llvm::DwarfCompileUnit::setSkeleton ( DwarfCompileUnit Skel)
inline

Set the skeleton unit associated with this unit.

Definition at line 272 of file DwarfCompileUnit.h.

◆ takeRanges()

SmallVector<RangeSpan, 2> llvm::DwarfCompileUnit::takeRanges ( )
inline

Definition at line 350 of file DwarfCompileUnit.h.

Referenced by llvm::DwarfDebug::beginModule().

◆ updateSubprogramScopeDIE()

DIE & DwarfCompileUnit::updateSubprogramScopeDIE ( const DISubprogram SP)

Member Data Documentation

◆ ExprRefedBaseTypes

std::vector<BaseTypeRef> llvm::DwarfCompileUnit::ExprRefedBaseTypes

Definition at line 137 of file DwarfCompileUnit.h.

Referenced by createBaseTypeDIEs().


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