LLVM  3.7.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::DwarfUnit Class Referenceabstract

This dwarf writer support class manages information associated with a source file. More...

#include <DwarfUnit.h>

Inheritance diagram for llvm::DwarfUnit:
[legend]
Collaboration diagram for llvm::DwarfUnit:
[legend]

Public Member Functions

virtual ~DwarfUnit ()
 
void initSection (MCSection *Section)
 
MCSectiongetSection () const
 
AsmPrintergetAsmPrinter () const
 
unsigned getUniqueID () const
 
uint16_t getLanguage () const
 
const DICompileUnitgetCUNode () const
 
DIEgetUnitDie ()
 
unsigned getDebugInfoOffset () const
 
void setDebugInfoOffset (unsigned DbgInfoOff)
 
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...
 
virtual void addGlobalName (StringRef Name, DIE &Die, const DIScope *Context)
 Add a new global name to the compile unit. More...
 
virtual void addGlobalType (const DIType *Ty, const DIE &Die, const DIScope *Context)
 Add a new global type to the compile unit. More...
 
void addAccelNamespace (StringRef Name, const DIE &Die)
 Add a new name to the namespace accelerator table. 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 addFlag (DIE &Die, dwarf::Attribute Attribute)
 Add a flag that is true to the DIE. More...
 
void addUInt (DIE &Die, dwarf::Attribute Attribute, Optional< dwarf::Form > Form, uint64_t Integer)
 Add an unsigned integer attribute data and value. More...
 
void addUInt (DIE &Block, dwarf::Form Form, uint64_t Integer)
 
void addSInt (DIE &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...
 
DIE::value_iterator addLabel (DIE &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 *Label)
 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, const DwarfTypeUnit &Type)
 
void addBlock (DIE &Die, dwarf::Attribute Attribute, DIELoc *Block)
 Add block data. More...
 
void addBlock (DIE &Die, dwarf::Attribute Attribute, DIEBlock *Block)
 Add block data. More...
 
void addSourceLine (DIE &Die, unsigned Line, StringRef File, StringRef Directory)
 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 DIType *Ty)
 
void addSourceLine (DIE &Die, const DINamespace *NS)
 
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, 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...
 
bool addRegisterOpPiece (DIELoc &TheDie, unsigned Reg, unsigned SizeInBits=0, unsigned OffsetInBits=0)
 Add register operand. More...
 
bool addRegisterOffset (DIELoc &TheDie, unsigned Reg, int64_t Offset)
 Add register offset. More...
 
void addBlockByrefAddress (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 Block variable (navigating the Block struct) based on the starting location. 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 Minimal=false)
 
DIEgetOrCreateTypeDIE (const MDNode *N)
 Find existing DIE or create new DIE for the given type. More...
 
DIEcreateTypeDIE (const DICompositeType *Ty)
 Get context owner's DIE. 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...
 
virtual unsigned getHeaderSize () const
 Compute the size of a header for this unit, not including the initial length field. More...
 
virtual void emitHeader (bool UseOffsets)
 Emit the header for this unit, not including the initial length field. More...
 
virtual DwarfCompileUnitgetCU ()=0
 
void constructTypeDIE (DIE &Buffer, const DICompositeType *CTy)
 

Protected Member Functions

 DwarfUnit (unsigned UID, dwarf::Tag, const DICompileUnit *CU, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU)
 
void addLocalString (DIE &Die, dwarf::Attribute Attribute, StringRef Str)
 Add a string attribute data and value. More...
 
void addIndexedString (DIE &Die, dwarf::Attribute Attribute, StringRef Str)
 
bool applySubprogramDefinitionAttributes (const DISubprogram *SP, DIE &SPDie)
 
DIEgetOrCreateStaticMemberDIE (const DIDerivedType *DT)
 Create new static data member DIE. More...
 
virtual unsigned getOrCreateSourceID (StringRef File, StringRef Directory)=0
 Look up the source ID with the given directory and source file names. More...
 
template<typename T >
Tresolve (TypedDINodeRef< T > Ref) const
 Look in the DwarfDebug map for the MDNode that corresponds to the reference. More...
 

Protected Attributes

unsigned UniqueID
 A numeric ID unique among all CUs in the module. More...
 
const DICompileUnitCUNode
 MDNode for the compile unit. More...
 
BumpPtrAllocator DIEValueAllocator
 
DIEUnitDie
 Unit debug information entry. More...
 
unsigned DebugInfoOffset
 Offset of the UnitDie from beginning of debug info section. More...
 
AsmPrinterAsm
 Target of Dwarf emission. More...
 
DwarfDebugDD
 
DwarfFileDU
 
DIEIndexTyDie
 An anonymous type for index type. Owned by UnitDie. 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...
 
MCSectionSection
 The section this unit will be emitted in. More...
 

Detailed Description

This dwarf writer support class manages information associated with a source file.

Definition at line 68 of file DwarfUnit.h.

Constructor & Destructor Documentation

DwarfUnit::DwarfUnit ( unsigned  UID,
dwarf::Tag  UnitTag,
const DICompileUnit CU,
AsmPrinter A,
DwarfDebug DW,
DwarfFile DWU 
)
protected

Definition at line 66 of file DwarfUnit.cpp.

DwarfUnit::~DwarfUnit ( )
virtual

Definition at line 85 of file DwarfUnit.cpp.

References DIEBlocks, and DIELocs.

Member Function Documentation

void llvm::DwarfUnit::addAccelNamespace ( StringRef  Name,
const DIE Die 
)

Add a new name to the namespace accelerator table.

void DwarfUnit::addBlock ( DIE Die,
dwarf::Attribute  Attribute,
DIELoc Block 
)
void DwarfUnit::addBlock ( DIE Die,
dwarf::Attribute  Attribute,
DIEBlock Block 
)
void DwarfUnit::addBlockByrefAddress ( 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 Block variable (navigating the Block struct) based on the starting location.

Add the DWARF information to the die. Obsolete, please use addComplexAddress instead.

Definition at line 430 of file DwarfUnit.cpp.

References addBlock(), addRegisterOffset(), addRegisterOpPiece(), addUInt(), DIEValueAllocator, llvm::dwarf::DW_FORM_data1, llvm::dwarf::DW_FORM_udata, llvm::DbgVariable::getName(), llvm::MachineLocation::getOffset(), llvm::DIType::getOffsetInBits(), llvm::MachineLocation::getReg(), llvm::DINode::getTag(), llvm::DbgVariable::getType(), llvm::MachineLocation::isReg(), N, and resolve().

Referenced by llvm::DwarfCompileUnit::addVariableAddress().

void DwarfUnit::addConstantFPValue ( DIE Die,
const MachineOperand MO 
)
void DwarfUnit::addConstantFPValue ( DIE Die,
const ConstantFP CFP 
)
void DwarfUnit::addConstantValue ( DIE Die,
const MachineOperand MO,
const DIType Ty 
)
void DwarfUnit::addConstantValue ( DIE Die,
const ConstantInt CI,
const DIType Ty 
)

Definition at line 609 of file DwarfUnit.cpp.

References addConstantValue(), and llvm::ConstantInt::getValue().

void DwarfUnit::addConstantValue ( DIE Die,
const APInt Val,
const DIType Ty 
)

Definition at line 628 of file DwarfUnit.cpp.

References addConstantValue(), DD, and isUnsignedDIType().

void DwarfUnit::addConstantValue ( DIE Die,
const APInt Val,
bool  Unsigned 
)
void DwarfUnit::addConstantValue ( DIE Die,
bool  Unsigned,
uint64_t  Val 
)
void DwarfUnit::addDIEEntry ( DIE Die,
dwarf::Attribute  Attribute,
DIE Entry 
)
void DwarfUnit::addDIEEntry ( DIE Die,
dwarf::Attribute  Attribute,
DIEEntry  Entry 
)
void DwarfUnit::addDIETypeSignature ( DIE Die,
const DwarfTypeUnit Type 
)
void DwarfUnit::addFlag ( DIE Die,
dwarf::Attribute  Attribute 
)
virtual void llvm::DwarfUnit::addGlobalName ( StringRef  Name,
DIE Die,
const DIScope Context 
)
inlinevirtual

Add a new global name to the compile unit.

Reimplemented in llvm::DwarfCompileUnit.

Definition at line 158 of file DwarfUnit.h.

Referenced by getOrCreateModule(), and getOrCreateNameSpace().

virtual void llvm::DwarfUnit::addGlobalType ( const DIType Ty,
const DIE Die,
const DIScope Context 
)
inlinevirtual

Add a new global type to the compile unit.

Reimplemented in llvm::DwarfCompileUnit.

Definition at line 162 of file DwarfUnit.h.

void llvm::DwarfUnit::addIndexedString ( DIE Die,
dwarf::Attribute  Attribute,
StringRef  Str 
)
protected
DIE::value_iterator DwarfUnit::addLabel ( DIE Die,
dwarf::Attribute  Attribute,
dwarf::Form  Form,
const MCSymbol Label 
)

Add a Dwarf label attribute data and value.

Definition at line 225 of file DwarfUnit.cpp.

References llvm::DIE::addValue(), and DIEValueAllocator.

Referenced by addLabel(), addOpAddress(), and llvm::DwarfCompileUnit::addSectionLabel().

void DwarfUnit::addLabel ( DIELoc Die,
dwarf::Form  Form,
const MCSymbol Label 
)

Definition at line 231 of file DwarfUnit.cpp.

References addLabel().

void DwarfUnit::addLabelDelta ( DIE Die,
dwarf::Attribute  Attribute,
const MCSymbol Hi,
const MCSymbol Lo 
)

Add a label delta attribute data and value.

Definition at line 259 of file DwarfUnit.cpp.

References llvm::DIE::addValue(), DIEValueAllocator, and llvm::dwarf::DW_FORM_data4.

Referenced by llvm::DwarfCompileUnit::attachLowHighPC().

void DwarfUnit::addLinkageName ( DIE Die,
StringRef  LinkageName 
)
void llvm::DwarfUnit::addLocalString ( DIE Die,
dwarf::Attribute  Attribute,
StringRef  Str 
)
protected

Add a string attribute data and value.

This is guaranteed to be in the local string pool instead of indirected.

void DwarfUnit::addOpAddress ( DIELoc Die,
const MCSymbol Label 
)

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.

Definition at line 248 of file DwarfUnit.cpp.

References addLabel(), addUInt(), DD, llvm::dwarf::DW_FORM_data1, llvm::dwarf::DW_FORM_GNU_addr_index, llvm::dwarf::DW_FORM_udata, llvm::DwarfDebug::getAddressPool(), llvm::AddressPool::getIndex(), and llvm::DwarfDebug::useSplitDwarf().

Referenced by llvm::DwarfCompileUnit::getOrCreateGlobalVariableDIE().

bool DwarfUnit::addRegisterOffset ( DIELoc TheDie,
unsigned  Reg,
int64_t  Offset 
)

Add register offset.

Returns
false if the register does not exist, e.g., because it was never materialized.

Definition at line 370 of file DwarfUnit.cpp.

References llvm::DwarfExpression::AddMachineRegIndirect(), and Asm.

Referenced by llvm::DwarfCompileUnit::addAddress(), and addBlockByrefAddress().

bool DwarfUnit::addRegisterOpPiece ( DIELoc TheDie,
unsigned  Reg,
unsigned  SizeInBits = 0,
unsigned  OffsetInBits = 0 
)

Add register operand.

Returns
false if the register does not exist, e.g., because it was never materialized.

Definition at line 363 of file DwarfUnit.cpp.

References llvm::DwarfExpression::AddMachineRegPiece(), and Asm.

Referenced by llvm::DwarfCompileUnit::addAddress(), and addBlockByrefAddress().

void DwarfUnit::addSectionOffset ( DIE Die,
dwarf::Attribute  Attribute,
uint64_t  Integer 
)

Add an offset into a section attribute data and value.

Definition at line 235 of file DwarfUnit.cpp.

References addUInt(), DD, llvm::dwarf::DW_FORM_data4, llvm::dwarf::DW_FORM_sec_offset, and llvm::DwarfDebug::getDwarfVersion().

Referenced by llvm::DwarfTypeUnit::DwarfTypeUnit().

void DwarfUnit::addSInt ( DIE Die,
dwarf::Attribute  Attribute,
Optional< dwarf::Form Form,
int64_t  Integer 
)

Add an signed integer attribute data and value.

Definition at line 206 of file DwarfUnit.cpp.

References llvm::DIE::addValue(), llvm::DIEInteger::BestForm(), and DIEValueAllocator.

Referenced by addSInt(), and llvm::DIEDwarfExpression::EmitSigned().

void DwarfUnit::addSInt ( DIELoc Die,
Optional< dwarf::Form Form,
int64_t  Integer 
)

Definition at line 213 of file DwarfUnit.cpp.

References addSInt().

void DwarfUnit::addSourceLine ( DIE Die,
unsigned  Line,
StringRef  File,
StringRef  Directory 
)
void DwarfUnit::addSourceLine ( DIE Die,
const DILocalVariable V 
)
void DwarfUnit::addSourceLine ( DIE Die,
const DIGlobalVariable G 
)
void DwarfUnit::addSourceLine ( DIE Die,
const DISubprogram SP 
)
void DwarfUnit::addSourceLine ( DIE Die,
const DIType Ty 
)
void DwarfUnit::addSourceLine ( DIE Die,
const DINamespace NS 
)
void DwarfUnit::addSourceLine ( DIE Die,
const DIObjCProperty Ty 
)
void DwarfUnit::addString ( DIE Die,
dwarf::Attribute  Attribute,
StringRef  Str 
)

Add a string attribute data and value.

We always emit a reference to the string pool instead of immediate strings so that DIEs have more predictable sizes. In the case of split dwarf we emit an index into another table which gets us the static offset into the string table.

Definition at line 218 of file DwarfUnit.cpp.

References llvm::DIE::addValue(), Asm, DIEValueAllocator, DU, llvm::dwarf::DW_FORM_GNU_str_index, llvm::dwarf::DW_FORM_strp, llvm::DwarfStringPool::getEntry(), and llvm::DwarfFile::getStringPool().

Referenced by addLinkageName(), applySubprogramAttributes(), llvm::DwarfCompileUnit::applyVariableAttributes(), llvm::DwarfCompileUnit::constructImportedEntityDIE(), constructTypeDIE(), llvm::DwarfCompileUnit::getOrCreateGlobalVariableDIE(), getOrCreateModule(), getOrCreateNameSpace(), and getOrCreateStaticMemberDIE().

void DwarfUnit::addTemplateParams ( DIE Buffer,
DINodeArray  TParams 
)

Add template parameters in buffer.

Definition at line 669 of file DwarfUnit.cpp.

Referenced by applySubprogramDefinitionAttributes(), and constructTypeDIE().

void DwarfUnit::addType ( DIE Entity,
const DIType Ty,
dwarf::Attribute  Attribute = dwarf::DW_AT_type 
)

Add a new type attribute to the specified entity.

This takes and attribute parameter because DW_AT_friend attributes are also type references.

Definition at line 770 of file DwarfUnit.cpp.

References addDIEEntry(), and getOrCreateTypeDIE().

Referenced by applySubprogramAttributes(), llvm::DwarfCompileUnit::applyVariableAttributes(), constructSubprogramArguments(), constructTypeDIE(), llvm::DwarfCompileUnit::getOrCreateGlobalVariableDIE(), and getOrCreateStaticMemberDIE().

void DwarfUnit::addUInt ( DIE Die,
dwarf::Attribute  Attribute,
Optional< dwarf::Form Form,
uint64_t  Integer 
)
void DwarfUnit::addUInt ( DIE Block,
dwarf::Form  Form,
uint64_t  Integer 
)

Definition at line 202 of file DwarfUnit.cpp.

References addUInt().

void DwarfUnit::applySubprogramAttributes ( const DISubprogram SP,
DIE SPDie,
bool  Minimal = false 
)
bool DwarfUnit::applySubprogramDefinitionAttributes ( const DISubprogram SP,
DIE SPDie 
)
protected
void DwarfUnit::constructContainingTypeDIEs ( )

Construct DIEs for types that contain vtables.

Definition at line 1323 of file DwarfUnit.cpp.

References addDIEEntry(), ContainingTypeMap, llvm::dwarf::DW_AT_containing_type, and getDIE().

void DwarfUnit::constructSubprogramArguments ( DIE Buffer,
DITypeRefArray  Args 
)
void DwarfUnit::constructTypeDIE ( DIE Buffer,
const DICompositeType CTy 
)
DIE & DwarfUnit::createAndAddDIE ( unsigned  Tag,
DIE Parent,
const DINode N = nullptr 
)
DIE * DwarfUnit::createTypeDIE ( const DICompositeType Ty)
void DwarfUnit::emitHeader ( bool  UseOffsets)
virtual
AsmPrinter* llvm::DwarfUnit::getAsmPrinter ( ) const
inline

Definition at line 136 of file DwarfUnit.h.

References Asm.

virtual DwarfCompileUnit& llvm::DwarfUnit::getCU ( )
pure virtual
const DICompileUnit* llvm::DwarfUnit::getCUNode ( ) const
inline

Definition at line 139 of file DwarfUnit.h.

References CUNode.

unsigned llvm::DwarfUnit::getDebugInfoOffset ( ) const
inline

Definition at line 142 of file DwarfUnit.h.

References DebugInfoOffset.

DIE * DwarfUnit::getDIE ( const DINode D) const
DIELoc* llvm::DwarfUnit::getDIELoc ( )
inline

Returns a fresh newly allocated DIELoc.

Definition at line 176 of file DwarfUnit.h.

References DIEValueAllocator.

Referenced by applySubprogramAttributes().

virtual unsigned llvm::DwarfUnit::getHeaderSize ( ) const
inlinevirtual

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

Reimplemented in llvm::DwarfTypeUnit.

Definition at line 321 of file DwarfUnit.h.

Referenced by emitHeader(), llvm::DwarfTypeUnit::getHeaderSize(), and llvm::DwarfCompileUnit::getLength().

uint16_t llvm::DwarfUnit::getLanguage ( ) const
inline
DIE * DwarfUnit::getOrCreateContextDIE ( const DIScope Context)
DIE * DwarfUnit::getOrCreateModule ( const DIModule M)
DIE * DwarfUnit::getOrCreateNameSpace ( const DINamespace NS)
virtual unsigned llvm::DwarfUnit::getOrCreateSourceID ( StringRef  File,
StringRef  Directory 
)
protectedpure virtual

Look up the source ID with the given directory and source file names.

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

Implemented in llvm::DwarfCompileUnit.

Referenced by addSourceLine().

DIE * DwarfUnit::getOrCreateStaticMemberDIE ( const DIDerivedType DT)
protected
DIE * DwarfUnit::getOrCreateSubprogramDIE ( const DISubprogram SP,
bool  Minimal = false 
)
DIE * DwarfUnit::getOrCreateTypeDIE ( const MDNode N)
std::string DwarfUnit::getParentContextString ( const DIScope Context) const

Get string containing language specific context for a global name.

Walks the metadata parent chain in a language specific manner (using the compile unit language) and returns it as a string. This is done at the metadata level because DIEs may not currently have been added to the parent context and walking the DIEs looking for names is more expensive than walking the metadata.

Definition at line 776 of file DwarfUnit.cpp.

References llvm::CS, llvm::StringRef::empty(), getLanguage(), llvm::DIScope::getName(), llvm::DIScope::getScope(), I, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SmallVectorTemplateCommon< T >::rbegin(), llvm::SmallVectorTemplateCommon< T >::rend(), and resolve().

Referenced by llvm::DwarfCompileUnit::addGlobalName(), and llvm::DwarfCompileUnit::addGlobalType().

MCSection* llvm::DwarfUnit::getSection ( ) const
inline

Definition at line 130 of file DwarfUnit.h.

References Section.

unsigned llvm::DwarfUnit::getUniqueID ( ) const
inline
DIE& llvm::DwarfUnit::getUnitDie ( )
inline
bool llvm::DwarfUnit::hasContent ( ) const
inline

Return true if this compile unit has something to write out.

Definition at line 146 of file DwarfUnit.h.

References llvm::DIE::hasChildren(), and UnitDie.

void DwarfUnit::initSection ( MCSection Section)

Definition at line 1508 of file DwarfUnit.cpp.

References Section.

void DwarfUnit::insertDIE ( const DINode Desc,
DIE D 
)

Insert DIE into the map.

We delegate the request to DwarfDebug when the MDNode can be part of the type system, since DIEs for the type system can be shared across CUs and the mappings are kept in DwarfDebug.

Definition at line 178 of file DwarfUnit.cpp.

References DU, llvm::DwarfFile::insertDIE(), isShareableAcrossCUs(), and MDNodeToDieMap.

Referenced by llvm::DwarfCompileUnit::constructImportedEntityDIE(), createAndAddDIE(), and llvm::DwarfCompileUnit::DwarfCompileUnit().

template<typename T >
T* llvm::DwarfUnit::resolve ( TypedDINodeRef< T Ref) const
inlineprotected
void llvm::DwarfUnit::setDebugInfoOffset ( unsigned  DbgInfoOff)
inline

Definition at line 143 of file DwarfUnit.h.

References DebugInfoOffset.

Member Data Documentation

AsmPrinter* llvm::DwarfUnit::Asm
protected
DenseMap<DIE *, const DINode *> llvm::DwarfUnit::ContainingTypeMap
protected

This map is used to keep track of subprogram DIEs that need DW_AT_containing_type attribute.

This attribute points to a DIE that corresponds to the MDNode mapped with the subprogram DIE.

Definition at line 108 of file DwarfUnit.h.

Referenced by applySubprogramAttributes(), and constructContainingTypeDIEs().

const DICompileUnit* llvm::DwarfUnit::CUNode
protected

MDNode for the compile unit.

Definition at line 74 of file DwarfUnit.h.

Referenced by getCUNode(), and getLanguage().

DwarfDebug* llvm::DwarfUnit::DD
protected
unsigned llvm::DwarfUnit::DebugInfoOffset
protected

Offset of the UnitDie from beginning of debug info section.

Definition at line 83 of file DwarfUnit.h.

Referenced by getDebugInfoOffset(), and setDebugInfoOffset().

std::vector<DIEBlock *> llvm::DwarfUnit::DIEBlocks
protected

A list of all the DIEBlocks in use.

Definition at line 100 of file DwarfUnit.h.

Referenced by addBlock(), and ~DwarfUnit().

std::vector<DIELoc *> llvm::DwarfUnit::DIELocs
protected

A list of all the DIELocs in use.

Definition at line 103 of file DwarfUnit.h.

Referenced by addBlock(), and ~DwarfUnit().

BumpPtrAllocator llvm::DwarfUnit::DIEValueAllocator
protected
DwarfFile* llvm::DwarfUnit::DU
protected
DIE* llvm::DwarfUnit::IndexTyDie
protected

An anonymous type for index type. Owned by UnitDie.

Definition at line 93 of file DwarfUnit.h.

DenseMap<const MDNode *, DIE *> llvm::DwarfUnit::MDNodeToDieMap
protected

Tracks the mapping of unit level debug information variables to debug information entries.

Definition at line 97 of file DwarfUnit.h.

Referenced by getDIE(), and insertDIE().

MCSection* llvm::DwarfUnit::Section
protected

The section this unit will be emitted in.

Definition at line 111 of file DwarfUnit.h.

Referenced by llvm::DwarfCompileUnit::getLabelBegin(), getSection(), llvm::DwarfCompileUnit::getSectionSym(), and initSection().

unsigned llvm::DwarfUnit::UniqueID
protected

A numeric ID unique among all CUs in the module.

Definition at line 71 of file DwarfUnit.h.

Referenced by getUniqueID().

DIE& llvm::DwarfUnit::UnitDie
protected

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