diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index 0f3d8c689fa..5707f962b4b 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -503,10 +503,10 @@ void DwarfCompileUnit::addScopeRangeList(DIE &ScopeDIE, const MCSymbol *RangeSectionSym = TLOF.getDwarfRangesSection()->getBeginSymbol(); if (isDwoUnit()) - addSectionDelta(ScopeDIE, dwarf::DW_AT_ranges, List.getSym(), + addSectionDelta(ScopeDIE, dwarf::DW_AT_ranges, List.Label, RangeSectionSym); else - addSectionLabel(ScopeDIE, dwarf::DW_AT_ranges, List.getSym(), + addSectionLabel(ScopeDIE, dwarf::DW_AT_ranges, List.Label, RangeSectionSym); } } diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index aa33659cd06..62745f9bee7 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -2331,7 +2331,7 @@ static MCSymbol *emitRnglistsTableHeader(AsmPrinter *Asm, Asm->OutStreamer->EmitLabel(Holder.getRnglistsTableBaseSym()); for (const RangeSpanList &List : Holder.getRangeLists()) - Asm->EmitLabelDifference(List.getSym(), Holder.getRnglistsTableBaseSym(), + Asm->EmitLabelDifference(List.Label, Holder.getRnglistsTableBaseSym(), 4); return TableEnd; @@ -2688,11 +2688,11 @@ void DwarfDebug::emitDebugARanges() { /// Emit a single range list. We handle both DWARF v5 and earlier. static void emitRangeList(DwarfDebug &DD, AsmPrinter *Asm, const RangeSpanList &List) { - emitRangeList(DD, Asm, List.getSym(), List.getRanges(), List.getCU(), + emitRangeList(DD, Asm, List.Label, List.Ranges, *List.CU, dwarf::DW_RLE_base_addressx, dwarf::DW_RLE_offset_pair, dwarf::DW_RLE_startx_length, dwarf::DW_RLE_end_of_list, llvm::dwarf::RangeListEncodingString, - List.getCU().getCUNode()->getRangesBaseAddress() || + List.CU->getCUNode()->getRangesBaseAddress() || DD.getDwarfVersion() >= 5, [](auto) {}); } @@ -2709,8 +2709,9 @@ void DwarfDebug::emitDebugRangesImpl(const DwarfFile &Holder, MCSection *Section Asm->OutStreamer->SwitchSection(Section); - MCSymbol *TableEnd = - getDwarfVersion() < 5 ? nullptr : emitRnglistsTableHeader(Asm, Holder); + MCSymbol *TableEnd = nullptr; + if (getDwarfVersion() < 5) + TableEnd = emitRnglistsTableHeader(Asm, Holder); for (const RangeSpanList &List : Holder.getRangeLists()) emitRangeList(*this, Asm, List); diff --git a/lib/CodeGen/AsmPrinter/DwarfFile.cpp b/lib/CodeGen/AsmPrinter/DwarfFile.cpp index e3c9095d134..e5c4db58f47 100644 --- a/lib/CodeGen/AsmPrinter/DwarfFile.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfFile.cpp @@ -126,6 +126,6 @@ void DwarfFile::addScopeLabel(LexicalScope *LS, DbgLabel *Label) { std::pair DwarfFile::addRange(const DwarfCompileUnit &CU, SmallVector R) { CURangeLists.push_back( - RangeSpanList(Asm->createTempSymbol("debug_ranges"), CU, std::move(R))); + RangeSpanList{Asm->createTempSymbol("debug_ranges"), &CU, std::move(R)}); return std::make_pair(CURangeLists.size() - 1, &CURangeLists.back()); } diff --git a/lib/CodeGen/AsmPrinter/DwarfFile.h b/lib/CodeGen/AsmPrinter/DwarfFile.h index 35fa51fb24c..cf293d7534d 100644 --- a/lib/CodeGen/AsmPrinter/DwarfFile.h +++ b/lib/CodeGen/AsmPrinter/DwarfFile.h @@ -37,21 +37,12 @@ struct RangeSpan { const MCSymbol *End; }; -class RangeSpanList { -private: +struct RangeSpanList { // Index for locating within the debug_range section this particular span. - MCSymbol *RangeSym; + MCSymbol *Label; const DwarfCompileUnit *CU; // List of ranges. SmallVector Ranges; - -public: - RangeSpanList(MCSymbol *Sym, const DwarfCompileUnit &CU, - SmallVector Ranges) - : RangeSym(Sym), CU(&CU), Ranges(std::move(Ranges)) {} - MCSymbol *getSym() const { return RangeSym; } - const DwarfCompileUnit &getCU() const { return *CU; } - const SmallVectorImpl &getRanges() const { return Ranges; } }; class DwarfFile {