mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
Sink DwarfUnit::Skeleton down into DwarfCompileUnit
Type units no longer have skeletons and it's misleading to be able to query for a type unit's skeleton (it might incorrectly lead one to conclude that if a unit doesn't have a skeleton it's not in a .dwo file... ). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221055 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
20dc677021
commit
4e35ac1b48
@ -18,7 +18,8 @@ namespace llvm {
|
||||
DwarfCompileUnit::DwarfCompileUnit(unsigned UID, DICompileUnit Node,
|
||||
AsmPrinter *A, DwarfDebug *DW,
|
||||
DwarfFile *DWU)
|
||||
: DwarfUnit(UID, dwarf::DW_TAG_compile_unit, Node, A, DW, DWU) {
|
||||
: DwarfUnit(UID, dwarf::DW_TAG_compile_unit, Node, A, DW, DWU),
|
||||
Skeleton(nullptr) {
|
||||
insertDIE(Node, &getUnitDie());
|
||||
}
|
||||
|
||||
|
@ -33,6 +33,9 @@ class DwarfCompileUnit : public DwarfUnit {
|
||||
/// the need to search for it in applyStmtList.
|
||||
unsigned stmtListIndex;
|
||||
|
||||
/// Skeleton unit associated with this unit.
|
||||
DwarfUnit *Skeleton;
|
||||
|
||||
/// \brief Construct a DIE for the given DbgVariable without initializing the
|
||||
/// DbgVariable's DIE reference.
|
||||
std::unique_ptr<DIE> constructVariableDIEImpl(const DbgVariable &DV,
|
||||
@ -134,6 +137,25 @@ public:
|
||||
void finishSubprogramDefinition(DISubprogram SP);
|
||||
|
||||
void collectDeadVariables(DISubprogram SP);
|
||||
|
||||
/// If there's a skeleton then return the begin label for the skeleton unit,
|
||||
/// otherwise return the local label for this unit.
|
||||
MCSymbol *getLocalLabelBegin() const {
|
||||
if (Skeleton)
|
||||
return Skeleton->getLabelBegin();
|
||||
return getLabelBegin();
|
||||
}
|
||||
|
||||
/// If there's a skeleton then return the section symbol for the skeleton
|
||||
/// unit, otherwise return the section symbol for this unit.
|
||||
MCSymbol *getLocalSectionSym() const {
|
||||
if (Skeleton)
|
||||
return Skeleton->getSectionSym();
|
||||
return getSectionSym();
|
||||
}
|
||||
|
||||
/// Set the skeleton unit associated with this unit.
|
||||
void setSkeleton(DwarfUnit &Skel) { Skeleton = &Skel; }
|
||||
};
|
||||
|
||||
} // end llvm namespace
|
||||
|
@ -47,8 +47,7 @@ GenerateDwarfTypeUnits("generate-type-units", cl::Hidden,
|
||||
DwarfUnit::DwarfUnit(unsigned UID, dwarf::Tag UnitTag, DICompileUnit Node,
|
||||
AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU)
|
||||
: UniqueID(UID), CUNode(Node), UnitDie(UnitTag), DebugInfoOffset(0), Asm(A),
|
||||
DD(DW), DU(DWU), IndexTyDie(nullptr), Section(nullptr),
|
||||
Skeleton(nullptr) {
|
||||
DD(DW), DU(DWU), IndexTyDie(nullptr), Section(nullptr) {
|
||||
assert(UnitTag == dwarf::DW_TAG_compile_unit ||
|
||||
UnitTag == dwarf::DW_TAG_type_unit);
|
||||
DIEIntegerOne = new (DIEValueAllocator) DIEInteger(1);
|
||||
|
@ -138,18 +138,12 @@ protected:
|
||||
/// The end of the unit within its section.
|
||||
MCSymbol *LabelEnd;
|
||||
|
||||
/// Skeleton unit associated with this unit.
|
||||
DwarfUnit *Skeleton;
|
||||
|
||||
DwarfUnit(unsigned UID, dwarf::Tag, DICompileUnit CU, AsmPrinter *A,
|
||||
DwarfDebug *DW, DwarfFile *DWU);
|
||||
|
||||
public:
|
||||
virtual ~DwarfUnit();
|
||||
|
||||
/// Set the skeleton unit associated with this unit.
|
||||
void setSkeleton(DwarfUnit &Skel) { Skeleton = &Skel; }
|
||||
|
||||
/// Pass in the SectionSym even though we could recreate it in every compile
|
||||
/// unit (type units will have actually distinct symbols once they're in
|
||||
/// comdat sections).
|
||||
@ -168,27 +162,11 @@ public:
|
||||
return Section;
|
||||
}
|
||||
|
||||
/// If there's a skeleton then return the section symbol for the skeleton
|
||||
/// unit, otherwise return the section symbol for this unit.
|
||||
MCSymbol *getLocalSectionSym() const {
|
||||
if (Skeleton)
|
||||
return Skeleton->getSectionSym();
|
||||
return getSectionSym();
|
||||
}
|
||||
|
||||
MCSymbol *getSectionSym() const {
|
||||
assert(Section);
|
||||
return SectionSym;
|
||||
}
|
||||
|
||||
/// If there's a skeleton then return the begin label for the skeleton unit,
|
||||
/// otherwise return the local label for this unit.
|
||||
MCSymbol *getLocalLabelBegin() const {
|
||||
if (Skeleton)
|
||||
return Skeleton->getLabelBegin();
|
||||
return getLabelBegin();
|
||||
}
|
||||
|
||||
MCSymbol *getLabelBegin() const {
|
||||
assert(Section);
|
||||
return LabelBegin;
|
||||
|
Loading…
x
Reference in New Issue
Block a user