Temporarily revert "NFC: DebugInfo: Refactor RangeSpanList to be a struct, like DebugLocStream::List"

as it was causing bot and build failures.

This reverts commit 8e04896288.
This commit is contained in:
Eric Christopher 2019-12-12 17:55:41 -08:00
parent cdb4560557
commit a8154e5e0c
4 changed files with 19 additions and 11 deletions

View File

@ -503,10 +503,10 @@ void DwarfCompileUnit::addScopeRangeList(DIE &ScopeDIE,
const MCSymbol *RangeSectionSym = const MCSymbol *RangeSectionSym =
TLOF.getDwarfRangesSection()->getBeginSymbol(); TLOF.getDwarfRangesSection()->getBeginSymbol();
if (isDwoUnit()) if (isDwoUnit())
addSectionDelta(ScopeDIE, dwarf::DW_AT_ranges, List.Label, addSectionDelta(ScopeDIE, dwarf::DW_AT_ranges, List.getSym(),
RangeSectionSym); RangeSectionSym);
else else
addSectionLabel(ScopeDIE, dwarf::DW_AT_ranges, List.Label, addSectionLabel(ScopeDIE, dwarf::DW_AT_ranges, List.getSym(),
RangeSectionSym); RangeSectionSym);
} }
} }

View File

@ -2331,7 +2331,7 @@ static MCSymbol *emitRnglistsTableHeader(AsmPrinter *Asm,
Asm->OutStreamer->EmitLabel(Holder.getRnglistsTableBaseSym()); Asm->OutStreamer->EmitLabel(Holder.getRnglistsTableBaseSym());
for (const RangeSpanList &List : Holder.getRangeLists()) for (const RangeSpanList &List : Holder.getRangeLists())
Asm->EmitLabelDifference(List.Label, Holder.getRnglistsTableBaseSym(), Asm->EmitLabelDifference(List.getSym(), Holder.getRnglistsTableBaseSym(),
4); 4);
return TableEnd; return TableEnd;
@ -2688,11 +2688,11 @@ void DwarfDebug::emitDebugARanges() {
/// Emit a single range list. We handle both DWARF v5 and earlier. /// Emit a single range list. We handle both DWARF v5 and earlier.
static void emitRangeList(DwarfDebug &DD, AsmPrinter *Asm, static void emitRangeList(DwarfDebug &DD, AsmPrinter *Asm,
const RangeSpanList &List) { const RangeSpanList &List) {
emitRangeList(DD, Asm, List.Label, List.Ranges, *List.CU, emitRangeList(DD, Asm, List.getSym(), List.getRanges(), List.getCU(),
dwarf::DW_RLE_base_addressx, dwarf::DW_RLE_offset_pair, dwarf::DW_RLE_base_addressx, dwarf::DW_RLE_offset_pair,
dwarf::DW_RLE_startx_length, dwarf::DW_RLE_end_of_list, dwarf::DW_RLE_startx_length, dwarf::DW_RLE_end_of_list,
llvm::dwarf::RangeListEncodingString, llvm::dwarf::RangeListEncodingString,
List.CU->getCUNode()->getRangesBaseAddress() || List.getCU().getCUNode()->getRangesBaseAddress() ||
DD.getDwarfVersion() >= 5, DD.getDwarfVersion() >= 5,
[](auto) {}); [](auto) {});
} }
@ -2709,9 +2709,8 @@ void DwarfDebug::emitDebugRangesImpl(const DwarfFile &Holder, MCSection *Section
Asm->OutStreamer->SwitchSection(Section); Asm->OutStreamer->SwitchSection(Section);
MCSymbol *TableEnd = nullptr; MCSymbol *TableEnd =
if (getDwarfVersion() < 5) getDwarfVersion() < 5 ? nullptr : emitRnglistsTableHeader(Asm, Holder);
TableEnd = emitRnglistsTableHeader(Asm, Holder);
for (const RangeSpanList &List : Holder.getRangeLists()) for (const RangeSpanList &List : Holder.getRangeLists())
emitRangeList(*this, Asm, List); emitRangeList(*this, Asm, List);

View File

@ -126,6 +126,6 @@ void DwarfFile::addScopeLabel(LexicalScope *LS, DbgLabel *Label) {
std::pair<uint32_t, RangeSpanList *> std::pair<uint32_t, RangeSpanList *>
DwarfFile::addRange(const DwarfCompileUnit &CU, SmallVector<RangeSpan, 2> R) { DwarfFile::addRange(const DwarfCompileUnit &CU, SmallVector<RangeSpan, 2> R) {
CURangeLists.push_back( 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()); return std::make_pair(CURangeLists.size() - 1, &CURangeLists.back());
} }

View File

@ -37,12 +37,21 @@ struct RangeSpan {
const MCSymbol *End; const MCSymbol *End;
}; };
struct RangeSpanList { class RangeSpanList {
private:
// Index for locating within the debug_range section this particular span. // Index for locating within the debug_range section this particular span.
MCSymbol *Label; MCSymbol *RangeSym;
const DwarfCompileUnit *CU; const DwarfCompileUnit *CU;
// List of ranges. // List of ranges.
SmallVector<RangeSpan, 2> Ranges; SmallVector<RangeSpan, 2> Ranges;
public:
RangeSpanList(MCSymbol *Sym, const DwarfCompileUnit &CU,
SmallVector<RangeSpan, 2> Ranges)
: RangeSym(Sym), CU(&CU), Ranges(std::move(Ranges)) {}
MCSymbol *getSym() const { return RangeSym; }
const DwarfCompileUnit &getCU() const { return *CU; }
const SmallVectorImpl<RangeSpan> &getRanges() const { return Ranges; }
}; };
class DwarfFile { class DwarfFile {