diff options
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h | 12 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DebugLocList.h | 4 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 14 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h | 3 |
4 files changed, 14 insertions, 19 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h b/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h index 8cfe39d2ca3..84bb6e4801c 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h +++ b/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h @@ -15,7 +15,6 @@ #include "llvm/MC/MCSymbol.h" namespace llvm { -class DwarfCompileUnit; class MDNode; /// \brief This struct describes location entries emitted in the .debug_loc /// section. @@ -91,14 +90,10 @@ private: /// A list of locations/constants belonging to this entry. SmallVector<Value, 1> Values; - /// The compile unit that this location entry is referenced by. - const DwarfCompileUnit *Unit; - public: - DebugLocEntry() : Begin(nullptr), End(nullptr), Unit(nullptr) {} - DebugLocEntry(const MCSymbol *B, const MCSymbol *E, - Value Val, const DwarfCompileUnit *U) - : Begin(B), End(E), Unit(U) { + DebugLocEntry() : Begin(nullptr), End(nullptr) {} + DebugLocEntry(const MCSymbol *B, const MCSymbol *E, Value Val) + : Begin(B), End(E) { Values.push_back(std::move(Val)); } @@ -130,7 +125,6 @@ public: const MCSymbol *getBeginSym() const { return Begin; } const MCSymbol *getEndSym() const { return End; } - const DwarfCompileUnit *getCU() const { return Unit; } const ArrayRef<Value> getValues() const { return Values; } void addValue(Value Val) { assert(DIVariable(Val.Variable).isVariablePiece() && diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugLocList.h b/llvm/lib/CodeGen/AsmPrinter/DebugLocList.h index 7a51c7bd5b0..542896c88e5 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DebugLocList.h +++ b/llvm/lib/CodeGen/AsmPrinter/DebugLocList.h @@ -10,13 +10,15 @@ #ifndef CODEGEN_ASMPRINTER_DEBUGLOCLIST_H__ #define CODEGEN_ASMPRINTER_DEBUGLOCLIST_H__ -#include "llvm/MC/MCSymbol.h" #include "llvm/ADT/SmallVector.h" #include "DebugLocEntry.h" namespace llvm { +class DwarfCompileUnit; +class MCSymbol; struct DebugLocList { MCSymbol *Label; + DwarfCompileUnit *CU; SmallVector<DebugLocEntry, 4> List; }; } diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index c94eeb943c9..ee23a1c5d22 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1229,10 +1229,9 @@ static bool piecesOverlap(DIVariable P1, DIVariable P2) { // [1-3] [x, (reg0, piece 0, 32), (reg1, piece 32, 32)] // [3-4] [x, (reg1, piece 32, 32)] // [4- ] [x, (mem, piece 0, 64)] -void DwarfDebug:: -buildLocationList(SmallVectorImpl<DebugLocEntry> &DebugLoc, - const DbgValueHistoryMap::InstrRanges &Ranges, - DwarfCompileUnit *TheCU) { +void +DwarfDebug::buildLocationList(SmallVectorImpl<DebugLocEntry> &DebugLoc, + const DbgValueHistoryMap::InstrRanges &Ranges) { typedef std::pair<DIVariable, DebugLocEntry::Value> Range; SmallVector<Range, 4> OpenRanges; @@ -1271,7 +1270,7 @@ buildLocationList(SmallVectorImpl<DebugLocEntry> &DebugLoc, DEBUG(dbgs() << "DotDebugLoc: " << *Begin << "\n"); auto Value = getDebugLocValue(Begin); - DebugLocEntry Loc(StartLabel, EndLabel, Value, TheCU); + DebugLocEntry Loc(StartLabel, EndLabel, Value); if (DebugLoc.empty() || !DebugLoc.back().Merge(Loc)) { // Add all values from still valid non-overlapping pieces. for (auto Range : OpenRanges) @@ -1340,11 +1339,12 @@ DwarfDebug::collectVariableInfo(SmallPtrSet<const MDNode *, 16> &Processed) { DotDebugLocEntries.resize(DotDebugLocEntries.size() + 1); DebugLocList &LocList = DotDebugLocEntries.back(); + LocList.CU = TheCU; LocList.Label = Asm->GetTempSymbol("debug_loc", DotDebugLocEntries.size() - 1); // Build the location list for this variable. - buildLocationList(LocList.List, Ranges, TheCU); + buildLocationList(LocList.List, Ranges); } // Collect info for variables that were optimized out. @@ -2198,11 +2198,11 @@ void DwarfDebug::emitDebugLoc() { unsigned char Size = Asm->getDataLayout().getPointerSize(); for (const auto &DebugLoc : DotDebugLocEntries) { Asm->OutStreamer.EmitLabel(DebugLoc.Label); + const DwarfCompileUnit *CU = DebugLoc.CU; for (const auto &Entry : DebugLoc.List) { // Set up the range. This range is relative to the entry point of the // compile unit. This is a hard coded 0 for low_pc when we're emitting // ranges, or the DW_AT_low_pc on the compile unit otherwise. - const DwarfCompileUnit *CU = Entry.getCU(); if (CU->getRanges().size() == 1) { // Grab the begin symbol from the first range as our base. const MCSymbol *Base = CU->getRanges()[0].getStart(); diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index fd6c155388c..ef99f6b7623 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -538,8 +538,7 @@ class DwarfDebug : public AsmPrinterHandler { /// \brief Build the location list for all DBG_VALUEs in the /// function that describe the same variable. void buildLocationList(SmallVectorImpl<DebugLocEntry> &DebugLoc, - const DbgValueHistoryMap::InstrRanges &Ranges, - DwarfCompileUnit *TheCU); + const DbgValueHistoryMap::InstrRanges &Ranges); /// \brief Collect variable information from the side table maintained /// by MMI. |

