9#ifndef LLVM_LIB_CODEGEN_ASMPRINTER_DWARFFILE_H
10#define LLVM_LIB_CODEGEN_ASMPRINTER_DWARFFILE_H
30class DwarfCompileUnit;
70 MCSymbol *StringOffsetsStartSym =
nullptr;
74 MCSymbol *RnglistsTableBaseSym =
nullptr;
80 std::map<unsigned, DbgVariable *> Args;
125 void addUnit(std::unique_ptr<DwarfCompileUnit> U);
142 bool UseRelativeOffsets =
false);
158 return ScopeVariables;
166 return AbstractLocalScopeDIEs;
170 return AbstractEntities;
174 DITypeNodeToDieMap.
insert(std::make_pair(TypeMD, Die));
178 return DITypeNodeToDieMap.
lookup(TypeMD);
This file defines the BumpPtrAllocator interface.
This file defines the DenseMap class.
This file defines the SmallVector class.
This class is intended to be used as a driving class for all asm writers.
Allocate memory in an ever growing pool, as if by bump-pointer.
Helps unique DIEAbbrev objects and assigns abbreviation numbers.
A structured debug information entry.
This class is used to track label information.
This class is used to track local variable information.
ValueT lookup(const_arg_type_t< KeyT > Val) const
lookup - Return the entry for the specified key, or a default constructed value if no such entry exis...
std::pair< iterator, bool > insert(const std::pair< KeyT, ValueT > &KV)
unsigned computeSizeAndOffset(DIE &Die, unsigned Offset)
Compute the size and offset of a DIE given an incoming Offset.
void addScopeLabel(LexicalScope *LS, DbgLabel *Label)
void addUnit(std::unique_ptr< DwarfCompileUnit > U)
Add a unit to the list of CUs.
void computeSizeAndOffsets()
Compute the size and offset of all the DIEs.
void setRnglistsTableBaseSym(MCSymbol *Sym)
DenseMap< LexicalScope *, ScopeVars > & getScopeVariables()
DenseMap< const DINode *, std::unique_ptr< DbgEntity > > & getAbstractEntities()
unsigned computeSizeAndOffsetsForUnit(DwarfUnit *TheU)
Compute the size and offset of all the DIEs in the given unit.
void emitUnits(bool UseOffsets)
Emit all of the units to the section listed with the given abbreviation section.
void emitUnit(DwarfUnit *TheU, bool UseOffsets)
Emit the given unit to its section.
const SmallVectorImpl< RangeSpanList > & getRangeLists() const
getRangeLists - Get the vector of range lists.
MCSymbol * getStringOffsetsStartSym() const
MCSymbol * getRnglistsTableBaseSym() const
DwarfStringPool & getStringPool()
Returns the string pool.
void emitAbbrevs(MCSection *)
Emit a set of abbreviations to the specific section.
void emitStrings(MCSection *StrSection, MCSection *OffsetSection=nullptr, bool UseRelativeOffsets=false)
Emit all of the strings to the section given.
DenseMap< LexicalScope *, LabelList > & getScopeLabels()
void addScopeVariable(LexicalScope *LS, DbgVariable *Var)
std::pair< uint32_t, RangeSpanList * > addRange(const DwarfCompileUnit &CU, SmallVector< RangeSpan, 2 > R)
DenseMap< const DILocalScope *, DIE * > & getAbstractScopeDIEs()
void setStringOffsetsStartSym(MCSymbol *Sym)
const SmallVectorImpl< std::unique_ptr< DwarfCompileUnit > > & getUnits()
void insertDIE(const MDNode *TypeMD, DIE *Die)
DIE * getDIE(const MDNode *TypeMD)
This dwarf writer support class manages information associated with a source file.
LexicalScope - This class is used to track scope information.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
This is an optimization pass for GlobalISel generic memory operations.
const DwarfCompileUnit * CU
SmallVector< RangeSpan, 2 > Ranges