mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-04 18:24:38 +00:00
DwarfDebug/Unit: Remove another case of label recreation by storing the gnu_ranges label in the unit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196793 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -2901,10 +2901,9 @@ void DwarfDebug::emitDebugRanges() {
|
|||||||
E = CUMap.end();
|
E = CUMap.end();
|
||||||
I != E; ++I) {
|
I != E; ++I) {
|
||||||
CompileUnit *TheCU = I->second;
|
CompileUnit *TheCU = I->second;
|
||||||
unsigned ID = TheCU->getUniqueID();
|
|
||||||
|
|
||||||
// Emit a symbol so we can find the beginning of our ranges.
|
// Emit a symbol so we can find the beginning of our ranges.
|
||||||
Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("gnu_ranges", ID));
|
Asm->OutStreamer.EmitLabel(TheCU->getLabelRange());
|
||||||
|
|
||||||
// Iterate over the misc ranges for the compile units in the module.
|
// Iterate over the misc ranges for the compile units in the module.
|
||||||
const SmallVectorImpl<RangeSpanList> &RangeLists = TheCU->getRangeLists();
|
const SmallVectorImpl<RangeSpanList> &RangeLists = TheCU->getRangeLists();
|
||||||
@ -2958,6 +2957,8 @@ CompileUnit *DwarfDebug::constructSkeletonCU(const CompileUnit *CU) {
|
|||||||
DIE *Die = new DIE(dwarf::DW_TAG_compile_unit);
|
DIE *Die = new DIE(dwarf::DW_TAG_compile_unit);
|
||||||
CompileUnit *NewCU = new CompileUnit(CU->getUniqueID(), Die, CU->getNode(),
|
CompileUnit *NewCU = new CompileUnit(CU->getUniqueID(), Die, CU->getNode(),
|
||||||
Asm, this, &SkeletonHolder);
|
Asm, this, &SkeletonHolder);
|
||||||
|
NewCU->initSection(Asm->getObjFileLowering().getDwarfInfoSection(),
|
||||||
|
DwarfInfoSectionSym);
|
||||||
|
|
||||||
NewCU->addLocalString(Die, dwarf::DW_AT_GNU_dwo_name,
|
NewCU->addLocalString(Die, dwarf::DW_AT_GNU_dwo_name,
|
||||||
CU->getNode().getSplitDebugFilename());
|
CU->getNode().getSplitDebugFilename());
|
||||||
@ -2992,11 +2993,8 @@ CompileUnit *DwarfDebug::constructSkeletonCU(const CompileUnit *CU) {
|
|||||||
// unit.
|
// unit.
|
||||||
if (!CU->getRangeLists().empty())
|
if (!CU->getRangeLists().empty())
|
||||||
addSectionLabel(Asm, NewCU, Die, dwarf::DW_AT_GNU_ranges_base,
|
addSectionLabel(Asm, NewCU, Die, dwarf::DW_AT_GNU_ranges_base,
|
||||||
Asm->GetTempSymbol("gnu_ranges", NewCU->getUniqueID()),
|
NewCU->getLabelRange(), DwarfDebugRangeSectionSym);
|
||||||
DwarfDebugRangeSectionSym);
|
|
||||||
|
|
||||||
NewCU->initSection(Asm->getObjFileLowering().getDwarfInfoSection(),
|
|
||||||
DwarfInfoSectionSym);
|
|
||||||
SkeletonHolder.addUnit(NewCU);
|
SkeletonHolder.addUnit(NewCU);
|
||||||
|
|
||||||
return NewCU;
|
return NewCU;
|
||||||
|
@ -140,6 +140,9 @@ protected:
|
|||||||
/// The end of the unit within its section.
|
/// The end of the unit within its section.
|
||||||
MCSymbol *LabelEnd;
|
MCSymbol *LabelEnd;
|
||||||
|
|
||||||
|
/// The label for the start of the range sets for the elements of this unit.
|
||||||
|
MCSymbol *LabelRange;
|
||||||
|
|
||||||
Unit(unsigned UID, DIE *D, DICompileUnit CU, AsmPrinter *A, DwarfDebug *DW,
|
Unit(unsigned UID, DIE *D, DICompileUnit CU, AsmPrinter *A, DwarfDebug *DW,
|
||||||
DwarfFile *DWU);
|
DwarfFile *DWU);
|
||||||
|
|
||||||
@ -157,7 +160,9 @@ public:
|
|||||||
Asm->GetTempSymbol(Section->getLabelBeginName(), getUniqueID());
|
Asm->GetTempSymbol(Section->getLabelBeginName(), getUniqueID());
|
||||||
this->LabelEnd =
|
this->LabelEnd =
|
||||||
Asm->GetTempSymbol(Section->getLabelEndName(), getUniqueID());
|
Asm->GetTempSymbol(Section->getLabelEndName(), getUniqueID());
|
||||||
|
this->LabelRange = Asm->GetTempSymbol("gnu_ranges", getUniqueID());
|
||||||
}
|
}
|
||||||
|
|
||||||
const MCSection *getSection() const {
|
const MCSection *getSection() const {
|
||||||
assert(Section);
|
assert(Section);
|
||||||
return Section;
|
return Section;
|
||||||
@ -178,6 +183,11 @@ public:
|
|||||||
return LabelEnd;
|
return LabelEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MCSymbol *getLabelRange() const {
|
||||||
|
assert(Section);
|
||||||
|
return LabelRange;
|
||||||
|
}
|
||||||
|
|
||||||
// Accessors.
|
// Accessors.
|
||||||
unsigned getUniqueID() const { return UniqueID; }
|
unsigned getUniqueID() const { return UniqueID; }
|
||||||
virtual uint16_t getLanguage() const = 0;
|
virtual uint16_t getLanguage() const = 0;
|
||||||
|
Reference in New Issue
Block a user