diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 7195709cc80..40bfaaabe25 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -251,8 +251,8 @@ unsigned DwarfUnits::getAddrPoolIndex(const MCSymbol *Sym) { return getAddrPoolIndex(MCSymbolRefExpr::Create(Sym, Asm->OutContext)); } -unsigned DwarfUnits::getAddrPoolIndex(const MCSymbolRefExpr *Sym) { - std::pair::iterator, bool> P = +unsigned DwarfUnits::getAddrPoolIndex(const MCExpr *Sym) { + std::pair::iterator, bool> P = AddressPool.insert(std::make_pair(Sym, NextAddrPoolNumber)); if (P.second) ++NextAddrPoolNumber; @@ -2361,9 +2361,9 @@ void DwarfUnits::emitAddresses(const MCSection *AddrSection) { // Get all of the address pool entries and put them in an array by their ID so // we can sort them. - SmallVector, 64> Entries; + SmallVector, 64> Entries; - for (DenseMap::iterator + for (DenseMap::iterator I = AddressPool.begin(), E = AddressPool.end(); I != E; ++I) @@ -2372,9 +2372,9 @@ void DwarfUnits::emitAddresses(const MCSection *AddrSection) { array_pod_sort(Entries.begin(), Entries.end()); for (unsigned i = 0, e = Entries.size(); i != e; ++i) { - // Emit a label for reference from debug information entries. - if (const MCSymbolRefExpr *Sym = Entries[i].second) - Asm->OutStreamer.EmitValue(Sym, Asm->getDataLayout().getPointerSize()); + // Emit an expression for reference from debug information entries. + if (const MCExpr *Expr = Entries[i].second) + Asm->OutStreamer.EmitValue(Expr, Asm->getDataLayout().getPointerSize()); else Asm->OutStreamer.EmitIntValue(0, Asm->getDataLayout().getPointerSize()); } diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index 893505c2540..60c6c3fa4c2 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -197,7 +197,7 @@ typedef StringMap, // A Symbol->unsigned mapping of addresses used by indirect // references. -typedef DenseMap AddrPool; +typedef DenseMap AddrPool; /// \brief Collects and handles information specific to a particular /// collection of units. @@ -270,7 +270,7 @@ public: /// \brief Returns the index into the address pool with the given /// label/symbol. - unsigned getAddrPoolIndex(const MCSymbolRefExpr *); + unsigned getAddrPoolIndex(const MCExpr *); unsigned getAddrPoolIndex(const MCSymbol *); /// \brief Returns the address pool.