summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp24
1 files changed, 8 insertions, 16 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 74ab1b27377..66e3c899c17 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -1554,24 +1554,12 @@ void DwarfDebug::emitDebugARanges() {
}
}
- // Add terminating symbols for each section.
- for (const auto &I : SectionMap) {
- MCSection *Section = I.first;
- MCSymbol *Sym = nullptr;
-
- if (Section)
- Sym = Asm->OutStreamer->endSection(Section);
-
- // Insert a final terminator.
- SectionMap[Section].push_back(SymbolCU(nullptr, Sym));
- }
-
DenseMap<DwarfCompileUnit *, std::vector<ArangeSpan>> Spans;
for (auto &I : SectionMap) {
- const MCSection *Section = I.first;
+ MCSection *Section = I.first;
SmallVector<SymbolCU, 8> &List = I.second;
- if (List.size() < 2)
+ if (List.size() < 1)
continue;
// If we have no section (e.g. common), just write out
@@ -1581,8 +1569,8 @@ void DwarfDebug::emitDebugARanges() {
ArangeSpan Span;
Span.Start = Cur.Sym;
Span.End = nullptr;
- if (Cur.CU)
- Spans[Cur.CU].push_back(Span);
+ assert(Cur.CU);
+ Spans[Cur.CU].push_back(Span);
}
continue;
}
@@ -1602,6 +1590,9 @@ void DwarfDebug::emitDebugARanges() {
return IA < IB;
});
+ // Insert a final terminator.
+ List.push_back(SymbolCU(nullptr, Asm->OutStreamer->endSection(Section)));
+
// Build spans between each label.
const MCSymbol *StartSym = List[0].Sym;
for (size_t n = 1, e = List.size(); n < e; n++) {
@@ -1613,6 +1604,7 @@ void DwarfDebug::emitDebugARanges() {
ArangeSpan Span;
Span.Start = StartSym;
Span.End = Cur.Sym;
+ assert(Prev.CU);
Spans[Prev.CU].push_back(Span);
StartSym = Cur.Sym;
}
OpenPOWER on IntegriCloud