mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-21 03:28:31 +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:
parent
1a803295d0
commit
c3b96bacc8
@ -2901,10 +2901,9 @@ void DwarfDebug::emitDebugRanges() {
|
||||
E = CUMap.end();
|
||||
I != E; ++I) {
|
||||
CompileUnit *TheCU = I->second;
|
||||
unsigned ID = TheCU->getUniqueID();
|
||||
|
||||
// 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.
|
||||
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);
|
||||
CompileUnit *NewCU = new CompileUnit(CU->getUniqueID(), Die, CU->getNode(),
|
||||
Asm, this, &SkeletonHolder);
|
||||
NewCU->initSection(Asm->getObjFileLowering().getDwarfInfoSection(),
|
||||
DwarfInfoSectionSym);
|
||||
|
||||
NewCU->addLocalString(Die, dwarf::DW_AT_GNU_dwo_name,
|
||||
CU->getNode().getSplitDebugFilename());
|
||||
@ -2992,11 +2993,8 @@ CompileUnit *DwarfDebug::constructSkeletonCU(const CompileUnit *CU) {
|
||||
// unit.
|
||||
if (!CU->getRangeLists().empty())
|
||||
addSectionLabel(Asm, NewCU, Die, dwarf::DW_AT_GNU_ranges_base,
|
||||
Asm->GetTempSymbol("gnu_ranges", NewCU->getUniqueID()),
|
||||
DwarfDebugRangeSectionSym);
|
||||
NewCU->getLabelRange(), DwarfDebugRangeSectionSym);
|
||||
|
||||
NewCU->initSection(Asm->getObjFileLowering().getDwarfInfoSection(),
|
||||
DwarfInfoSectionSym);
|
||||
SkeletonHolder.addUnit(NewCU);
|
||||
|
||||
return NewCU;
|
||||
|
@ -140,6 +140,9 @@ protected:
|
||||
/// The end of the unit within its section.
|
||||
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,
|
||||
DwarfFile *DWU);
|
||||
|
||||
@ -157,7 +160,9 @@ public:
|
||||
Asm->GetTempSymbol(Section->getLabelBeginName(), getUniqueID());
|
||||
this->LabelEnd =
|
||||
Asm->GetTempSymbol(Section->getLabelEndName(), getUniqueID());
|
||||
this->LabelRange = Asm->GetTempSymbol("gnu_ranges", getUniqueID());
|
||||
}
|
||||
|
||||
const MCSection *getSection() const {
|
||||
assert(Section);
|
||||
return Section;
|
||||
@ -178,6 +183,11 @@ public:
|
||||
return LabelEnd;
|
||||
}
|
||||
|
||||
MCSymbol *getLabelRange() const {
|
||||
assert(Section);
|
||||
return LabelRange;
|
||||
}
|
||||
|
||||
// Accessors.
|
||||
unsigned getUniqueID() const { return UniqueID; }
|
||||
virtual uint16_t getLanguage() const = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user