mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
NFC: DebugInfo: Refactor RangeSpanList to be a struct, like DebugLocStream::List
Move these data structures closer together so their emission code can eventually share more of its implementation.
This commit is contained in:
parent
ee634363a8
commit
dc5cbd92c1
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -126,6 +126,6 @@ void DwarfFile::addScopeLabel(LexicalScope *LS, DbgLabel *Label) {
|
||||
std::pair<uint32_t, RangeSpanList *>
|
||||
DwarfFile::addRange(const DwarfCompileUnit &CU, SmallVector<RangeSpan, 2> 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());
|
||||
}
|
||||
|
@ -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<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 {
|
||||
|
Loading…
Reference in New Issue
Block a user