<div dir="ltr"><div dir="ltr">On Mon, Oct 14, 2019 at 2:38 PM Michael Spencer <<a href="mailto:bigcheesegs@gmail.com">bigcheesegs@gmail.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I believe this commit broke the modules build. You added a dependency on "<span>llvm</span>/Bitcode/BitcodeAnalyzer.h" which is part of the LLVM_Bitcode module which depends on the LLVM_intrinsic_gen module which depends on <span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0);font-family:Menlo;font-size:11px">"llvm/IR/Attributes.inc" </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><font face="arial, sans-serif">which is a generated header not generated before libLLVM</font></span>DebugInfo<font color="#000000" face="arial, sans-serif"><span style="font-variant-ligatures:no-common-ligatures">.</span></font></div>
<div dir="ltr"><br clear="all"><div><div dir="ltr">- Michael Spencer</div></div></div></div></blockquote><div><br></div><div>Fixed in <span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0);font-family:Menlo;font-size:11px">r374827.</span></div>
<div><br></div><div>- Michael Spencer<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 11, 2019 at 12:04 PM David Blaikie via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: dblaikie<br>
Date: Fri Oct 11 12:06:35 2019<br>
New Revision: 374582<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=374582&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=374582&view=rev</a><br>
Log:<br>
llvm-dwarfdump: Add verbose printing for debug_loclists<br>
<br>
Modified:<br>
llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h<br>
llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp<br>
llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp<br>
llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp<br>
llvm/trunk/test/CodeGen/X86/debug-loclists.ll<br>
llvm/trunk/test/DebugInfo/X86/dwarfdump-debug-loclists.test<br>
llvm/trunk/test/DebugInfo/X86/fission-ranges.ll<br>
llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loclists_startx_length.s<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h?rev=374582&r1=374581&r2=374582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h?rev=374582&r1=374581&r2=374582&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h Fri Oct 11 12:06:35 2019<br>
@@ -11,6 +11,7 @@<br>
<br>
#include "llvm/ADT/Optional.h"<br>
#include "llvm/ADT/SmallVector.h"<br>
+#include "llvm/DebugInfo/DIContext.h"<br>
#include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h"<br>
#include "llvm/DebugInfo/DWARF/DWARFRelocMap.h"<br>
#include <cstdint><br>
@@ -42,6 +43,7 @@ public:<br>
/// Dump this list on OS.<br>
void dump(raw_ostream &OS, uint64_t BaseAddress, bool IsLittleEndian,<br>
unsigned AddressSize, const MCRegisterInfo *MRI, DWARFUnit *U,<br>
+ DIDumpOptions DumpOpts,<br>
unsigned Indent) const;<br>
};<br>
<br>
@@ -58,7 +60,7 @@ private:<br>
<br>
public:<br>
/// Print the location lists found within the debug_loc section.<br>
- void dump(raw_ostream &OS, const MCRegisterInfo *RegInfo,<br>
+ void dump(raw_ostream &OS, const MCRegisterInfo *RegInfo, DIDumpOptions DumpOpts,<br>
Optional<uint64_t> Offset) const;<br>
<br>
/// Parse the debug_loc section accessible via the 'data' parameter using the<br>
@@ -76,9 +78,13 @@ class DWARFDebugLoclists {<br>
public:<br>
struct Entry {<br>
uint8_t Kind;<br>
+ uint64_t Offset;<br>
uint64_t Value0;<br>
uint64_t Value1;<br>
SmallVector<uint8_t, 4> Loc;<br>
+ void dump(raw_ostream &OS, uint64_t &BaseAddr, bool IsLittleEndian,<br>
+ unsigned AddressSize, const MCRegisterInfo *MRI, DWARFUnit *U,<br>
+ DIDumpOptions DumpOpts, unsigned Indent, size_t MaxEncodingStringLength) const;<br>
};<br>
<br>
struct LocationList {<br>
@@ -86,7 +92,7 @@ public:<br>
SmallVector<Entry, 2> Entries;<br>
void dump(raw_ostream &OS, uint64_t BaseAddr, bool IsLittleEndian,<br>
unsigned AddressSize, const MCRegisterInfo *RegInfo,<br>
- DWARFUnit *U, unsigned Indent) const;<br>
+ DWARFUnit *U, DIDumpOptions DumpOpts, unsigned Indent) const;<br>
};<br>
<br>
private:<br>
@@ -101,7 +107,7 @@ private:<br>
public:<br>
void parse(DataExtractor data, uint64_t Offset, uint64_t EndOffset, uint16_t Version);<br>
void dump(raw_ostream &OS, uint64_t BaseAddr, const MCRegisterInfo *RegInfo,<br>
- Optional<uint64_t> Offset) const;<br>
+ DIDumpOptions DumpOpts, Optional<uint64_t> Offset) const;<br>
<br>
/// Return the location list at the given offset or nullptr.<br>
LocationList const *getLocationListAtOffset(uint64_t Offset) const;<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp?rev=374582&r1=374581&r2=374582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp?rev=374582&r1=374581&r2=374582&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp Fri Oct 11 12:06:35 2019<br>
@@ -305,7 +305,7 @@ static void dumpLoclistsSection(raw_ostr<br>
DWARFDebugLoclists Loclists;<br>
uint64_t EndOffset = Header.length() + Header.getHeaderOffset();<br>
Loclists.parse(LocData, Offset, EndOffset, Header.getVersion());<br>
- Loclists.dump(OS, 0, MRI, DumpOffset);<br>
+ Loclists.dump(OS, 0, MRI, DumpOpts, DumpOffset);<br>
Offset = EndOffset;<br>
}<br>
}<br>
@@ -382,7 +382,7 @@ void DWARFContext::dump(<br>
<br>
if (const auto *Off = shouldDump(Explicit, ".debug_loc", DIDT_ID_DebugLoc,<br>
DObj->getLocSection().Data)) {<br>
- getDebugLoc()->dump(OS, getRegisterInfo(), *Off);<br>
+ getDebugLoc()->dump(OS, getRegisterInfo(), DumpOpts, *Off);<br>
}<br>
if (const auto *Off =<br>
shouldDump(Explicit, ".debug_loclists", DIDT_ID_DebugLoclists,<br>
@@ -394,7 +394,7 @@ void DWARFContext::dump(<br>
if (const auto *Off =<br>
shouldDump(ExplicitDWO, ".debug_loc.dwo", DIDT_ID_DebugLoc,<br>
DObj->getLocDWOSection().Data)) {<br>
- getDebugLocDWO()->dump(OS, 0, getRegisterInfo(), *Off);<br>
+ getDebugLocDWO()->dump(OS, 0, getRegisterInfo(), DumpOpts, *Off);<br>
}<br>
<br>
if (const auto *Off = shouldDump(Explicit, ".debug_frame", DIDT_ID_DebugFrame,<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp?rev=374582&r1=374581&r2=374582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp?rev=374582&r1=374581&r2=374582&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp Fri Oct 11 12:06:35 2019<br>
@@ -9,6 +9,7 @@<br>
#include "llvm/DebugInfo/DWARF/DWARFDebugLoc.h"<br>
#include "llvm/ADT/StringRef.h"<br>
#include "llvm/BinaryFormat/Dwarf.h"<br>
+#include "llvm/Bitcode/BitcodeAnalyzer.h"<br>
#include "llvm/DebugInfo/DWARF/DWARFContext.h"<br>
#include "llvm/DebugInfo/DWARF/DWARFExpression.h"<br>
#include "llvm/DebugInfo/DWARF/DWARFRelocMap.h"<br>
@@ -39,6 +40,7 @@ void DWARFDebugLoc::LocationList::dump(r<br>
bool IsLittleEndian,<br>
unsigned AddressSize,<br>
const MCRegisterInfo *MRI, DWARFUnit *U,<br>
+ DIDumpOptions DumpOpts,<br>
unsigned Indent) const {<br>
for (const Entry &E : Entries) {<br>
OS << '\n';<br>
@@ -62,12 +64,12 @@ DWARFDebugLoc::getLocationListAtOffset(u<br>
return nullptr;<br>
}<br>
<br>
-void DWARFDebugLoc::dump(raw_ostream &OS, const MCRegisterInfo *MRI,<br>
+void DWARFDebugLoc::dump(raw_ostream &OS, const MCRegisterInfo *MRI, DIDumpOptions DumpOpts,<br>
Optional<uint64_t> Offset) const {<br>
auto DumpLocationList = [&](const LocationList &L) {<br>
OS << format("0x%8.8" PRIx64 ": ", L.Offset);<br>
- L.dump(OS, 0, IsLittleEndian, AddressSize, MRI, nullptr, 12);<br>
- OS << "\n\n";<br>
+ L.dump(OS, 0, IsLittleEndian, AddressSize, MRI, nullptr, DumpOpts, 12);<br>
+ OS << "\n";<br>
};<br>
<br>
if (Offset) {<br>
@@ -78,6 +80,8 @@ void DWARFDebugLoc::dump(raw_ostream &OS<br>
<br>
for (const LocationList &L : Locations) {<br>
DumpLocationList(L);<br>
+ if (&L != &Locations.back())<br>
+ OS << '\n';<br>
}<br>
}<br>
<br>
@@ -146,7 +150,11 @@ DWARFDebugLoclists::parseOneLocationList<br>
while (auto Kind = Data.getU8(C)) {<br>
Entry E;<br>
E.Kind = Kind;<br>
+ E.Offset = C.tell() - 1;<br>
switch (Kind) {<br>
+ case dwarf::DW_LLE_base_addressx:<br>
+ E.Value0 = Data.getULEB128(C);<br>
+ break;<br>
case dwarf::DW_LLE_startx_length:<br>
E.Value0 = Data.getULEB128(C);<br>
// Pre-DWARF 5 has different interpretation of the length field. We have<br>
@@ -173,7 +181,8 @@ DWARFDebugLoclists::parseOneLocationList<br>
"LLE of kind %x not supported", (int)Kind);<br>
}<br>
<br>
- if (Kind != dwarf::DW_LLE_base_address) {<br>
+ if (Kind != dwarf::DW_LLE_base_address &&<br>
+ Kind != dwarf::DW_LLE_base_addressx) {<br>
unsigned Bytes = Version >= 5 ? Data.getULEB128(C) : Data.getU16(C);<br>
// A single location description describing the location of the object...<br>
Data.getU8(C, E.Loc, Bytes);<br>
@@ -183,6 +192,10 @@ DWARFDebugLoclists::parseOneLocationList<br>
}<br>
if (Error Err = C.takeError())<br>
return std::move(Err);<br>
+ Entry E;<br>
+ E.Kind = dwarf::DW_LLE_end_of_list;<br>
+ E.Offset = C.tell() - 1;<br>
+ LL.Entries.push_back(E);<br>
*Offset = C.tell();<br>
return LL;<br>
}<br>
@@ -210,51 +223,106 @@ DWARFDebugLoclists::getLocationListAtOff<br>
return nullptr;<br>
}<br>
<br>
-void DWARFDebugLoclists::LocationList::dump(raw_ostream &OS, uint64_t BaseAddr,<br>
- bool IsLittleEndian,<br>
- unsigned AddressSize,<br>
- const MCRegisterInfo *MRI,<br>
- DWARFUnit *U,<br>
- unsigned Indent) const {<br>
- for (const Entry &E : Entries) {<br>
- switch (E.Kind) {<br>
+void DWARFDebugLoclists::Entry::dump(raw_ostream &OS, uint64_t &BaseAddr,<br>
+ bool IsLittleEndian, unsigned AddressSize,<br>
+ const MCRegisterInfo *MRI, DWARFUnit *U,<br>
+ DIDumpOptions DumpOpts, unsigned Indent,<br>
+ size_t MaxEncodingStringLength) const {<br>
+ if (DumpOpts.Verbose) {<br>
+ OS << "\n";<br>
+ OS.indent(Indent);<br>
+ auto EncodingString = dwarf::LocListEncodingString(Kind);<br>
+ // Unsupported encodings should have been reported during parsing.<br>
+ assert(!EncodingString.empty() && "Unknown loclist entry encoding");<br>
+ OS << format("%s%*c", EncodingString.data(),<br>
+ MaxEncodingStringLength - EncodingString.size() + 1, '(');<br>
+ switch (Kind) {<br>
case dwarf::DW_LLE_startx_length:<br>
- OS << '\n';<br>
- OS.indent(Indent);<br>
- OS << "Addr idx " << E.Value0 << " (w/ length " << E.Value1 << "): ";<br>
- break;<br>
case dwarf::DW_LLE_start_length:<br>
- OS << '\n';<br>
- OS.indent(Indent);<br>
- OS << format("[0x%*.*" PRIx64 ", 0x%*.*" PRIx64 "): ", AddressSize * 2,<br>
- AddressSize * 2, E.Value0, AddressSize * 2, AddressSize * 2,<br>
- E.Value0 + E.Value1);<br>
- break;<br>
case dwarf::DW_LLE_offset_pair:<br>
- OS << '\n';<br>
- OS.indent(Indent);<br>
- OS << format("[0x%*.*" PRIx64 ", 0x%*.*" PRIx64 "): ", AddressSize * 2,<br>
- AddressSize * 2, BaseAddr + E.Value0, AddressSize * 2,<br>
- AddressSize * 2, BaseAddr + E.Value1);<br>
+ OS << format("0x%*.*" PRIx64 ", 0x%*.*" PRIx64, AddressSize * 2,<br>
+ AddressSize * 2, Value0, AddressSize * 2, AddressSize * 2,<br>
+ Value1);<br>
break;<br>
+ case dwarf::DW_LLE_base_addressx:<br>
case dwarf::DW_LLE_base_address:<br>
- BaseAddr = E.Value0;<br>
+ OS << format("0x%*.*" PRIx64, AddressSize * 2, AddressSize * 2,<br>
+ Value0);<br>
+ break;<br>
+ case dwarf::DW_LLE_end_of_list:<br>
break;<br>
- default:<br>
- llvm_unreachable("unreachable locations list kind");<br>
}<br>
-<br>
- dumpExpression(OS, E.Loc, IsLittleEndian, AddressSize, MRI, U);<br>
+ OS << ')';<br>
+ }<br>
+ auto PrintPrefix = [&] {<br>
+ OS << "\n";<br>
+ OS.indent(Indent);<br>
+ if (DumpOpts.Verbose)<br>
+ OS << format("%*s", MaxEncodingStringLength, (const char *)"=> ");<br>
+ };<br>
+ switch (Kind) {<br>
+ case dwarf::DW_LLE_startx_length:<br>
+ PrintPrefix();<br>
+ OS << "Addr idx " << Value0 << " (w/ length " << Value1 << "): ";<br>
+ break;<br>
+ case dwarf::DW_LLE_start_length:<br>
+ PrintPrefix();<br>
+ DWARFAddressRange(Value0, Value0 + Value1)<br>
+ .dump(OS, AddressSize, DumpOpts);<br>
+ OS << ": ";<br>
+ break;<br>
+ case dwarf::DW_LLE_offset_pair:<br>
+ PrintPrefix();<br>
+ DWARFAddressRange(BaseAddr + Value0, BaseAddr + Value1)<br>
+ .dump(OS, AddressSize, DumpOpts);<br>
+ OS << ": ";<br>
+ break;<br>
+ case dwarf::DW_LLE_base_addressx:<br>
+ if (!DumpOpts.Verbose)<br>
+ return;<br>
+ break;<br>
+ case dwarf::DW_LLE_end_of_list:<br>
+ if (!DumpOpts.Verbose)<br>
+ return;<br>
+ break;<br>
+ case dwarf::DW_LLE_base_address:<br>
+ BaseAddr = Value0;<br>
+ if (!DumpOpts.Verbose)<br>
+ return;<br>
+ break;<br>
+ default:<br>
+ llvm_unreachable("unreachable locations list kind");<br>
}<br>
+<br>
+ dumpExpression(OS, Loc, IsLittleEndian, AddressSize, MRI, U);<br>
+}<br>
+void DWARFDebugLoclists::LocationList::dump(raw_ostream &OS, uint64_t BaseAddr,<br>
+ bool IsLittleEndian,<br>
+ unsigned AddressSize,<br>
+ const MCRegisterInfo *MRI,<br>
+ DWARFUnit *U,<br>
+ DIDumpOptions DumpOpts, <br>
+ unsigned Indent) const {<br>
+ size_t MaxEncodingStringLength = 0;<br>
+ if (DumpOpts.Verbose)<br>
+ for (const auto &Entry : Entries)<br>
+ MaxEncodingStringLength =<br>
+ std::max(MaxEncodingStringLength,<br>
+ dwarf::LocListEncodingString(Entry.Kind).size());<br>
+<br>
+ for (const Entry &E : Entries)<br>
+ E.dump(OS, BaseAddr, IsLittleEndian, AddressSize, MRI, U, DumpOpts, Indent,<br>
+ MaxEncodingStringLength);<br>
}<br>
<br>
void DWARFDebugLoclists::dump(raw_ostream &OS, uint64_t BaseAddr,<br>
- const MCRegisterInfo *MRI,<br>
+ const MCRegisterInfo *MRI, DIDumpOptions DumpOpts, <br>
Optional<uint64_t> Offset) const {<br>
auto DumpLocationList = [&](const LocationList &L) {<br>
OS << format("0x%8.8" PRIx64 ": ", L.Offset);<br>
- L.dump(OS, BaseAddr, IsLittleEndian, AddressSize, MRI, nullptr, /*Indent=*/12);<br>
- OS << "\n\n";<br>
+ L.dump(OS, BaseAddr, IsLittleEndian, AddressSize, MRI, nullptr, DumpOpts,<br>
+ /*Indent=*/12);<br>
+ OS << "\n";<br>
};<br>
<br>
if (Offset) {<br>
@@ -265,5 +333,7 @@ void DWARFDebugLoclists::dump(raw_ostrea<br>
<br>
for (const LocationList &L : Locations) {<br>
DumpLocationList(L);<br>
+ if (&L != &Locations.back())<br>
+ OS << '\n';<br>
}<br>
}<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp?rev=374582&r1=374581&r2=374582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp?rev=374582&r1=374581&r2=374582&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp Fri Oct 11 12:06:35 2019<br>
@@ -97,8 +97,10 @@ static void dumpLocation(raw_ostream &OS<br>
uint64_t BaseAddr = 0;<br>
if (Optional<object::SectionedAddress> BA = U->getBaseAddress())<br>
BaseAddr = BA->Address;<br>
+ auto LLDumpOpts = DumpOpts;<br>
+ LLDumpOpts.Verbose = false;<br>
ExpectedLL->dump(OS, BaseAddr, Ctx.isLittleEndian(), Obj.getAddressSize(),<br>
- MRI, U, Indent);<br>
+ MRI, U, LLDumpOpts, Indent);<br>
} else {<br>
OS << '\n';<br>
OS.indent(Indent);<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/debug-loclists.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/debug-loclists.ll?rev=374582&r1=374581&r2=374582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/debug-loclists.ll?rev=374582&r1=374581&r2=374582&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/X86/debug-loclists.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/debug-loclists.ll Fri Oct 11 12:06:35 2019<br>
@@ -13,8 +13,10 @@<br>
; CHECK: .debug_loclists contents:<br>
; CHECK-NEXT: 0x00000000: locations list header: length = 0x00000015, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x00000000<br>
; CHECK-NEXT: 0x0000000c:<br>
-; CHECK-NEXT: [0x0000000000000000, 0x0000000000000004): DW_OP_breg5 RDI+0<br>
-; CHECK-NEXT: [0x0000000000000004, 0x0000000000000012): DW_OP_breg3 RBX+0<br>
+; CHECK-NEXT: DW_LLE_offset_pair(0x0000000000000000, 0x0000000000000004)<br>
+; CHECK-NEXT: => [0x0000000000000000, 0x0000000000000004): DW_OP_breg5 RDI+0<br>
+; CHECK-NEXT: DW_LLE_offset_pair(0x0000000000000004, 0x0000000000000012)<br>
+; CHECK-NEXT: => [0x0000000000000004, 0x0000000000000012): DW_OP_breg3 RBX+0<br>
<br>
; There is no way to use llvm-dwarfdump atm (2018, october) to verify the DW_LLE_* codes emited,<br>
; because dumper is not yet implements that. Use asm code to do this check instead.<br>
<br>
Modified: llvm/trunk/test/DebugInfo/X86/dwarfdump-debug-loclists.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dwarfdump-debug-loclists.test?rev=374582&r1=374581&r2=374582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dwarfdump-debug-loclists.test?rev=374582&r1=374581&r2=374582&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/DebugInfo/X86/dwarfdump-debug-loclists.test (original)<br>
+++ llvm/trunk/test/DebugInfo/X86/dwarfdump-debug-loclists.test Fri Oct 11 12:06:35 2019<br>
@@ -11,9 +11,14 @@<br>
# CHECK: .debug_loclists contents:<br>
# CHECK-NEXT: 0x00000000: locations list header: length = 0x0000002c, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x00000000<br>
# CHECK-NEXT: 0x0000000c:<br>
-# CHECK-NEXT: [0x0000000000000000, 0x0000000000000010): DW_OP_breg5 RDI+0<br>
-# CHECK-NEXT: [0x0000000000000530, 0x0000000000000540): DW_OP_breg6 RBP-8, DW_OP_deref<br>
-# CHECK-NEXT: [0x0000000000000700, 0x0000000000000710): DW_OP_breg5 RDI+0<br>
+# CHECK-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000010)<br>
+# CHECK-NEXT: => [0x0000000000000000, 0x0000000000000010): DW_OP_breg5 RDI+0<br>
+# CHECK-NEXT: DW_LLE_base_address(0x0000000000000500)<br>
+# CHECK-NEXT: DW_LLE_offset_pair (0x0000000000000030, 0x0000000000000040)<br>
+# CHECK-NEXT: => [0x0000000000000530, 0x0000000000000540): DW_OP_breg6 RBP-8, DW_OP_deref<br>
+# CHECK-NEXT: DW_LLE_start_length(0x0000000000000700, 0x0000000000000010)<br>
+# CHECK-NEXT: => [0x0000000000000700, 0x0000000000000710): DW_OP_breg5 RDI+0<br>
+# CHECK-NEXT: DW_LLE_end_of_list ()<br>
<br>
.section .debug_str,"MS",@progbits,1<br>
.asciz "stub"<br>
<br>
Modified: llvm/trunk/test/DebugInfo/X86/fission-ranges.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-ranges.ll?rev=374582&r1=374581&r2=374582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-ranges.ll?rev=374582&r1=374581&r2=374582&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/DebugInfo/X86/fission-ranges.ll (original)<br>
+++ llvm/trunk/test/DebugInfo/X86/fission-ranges.ll Fri Oct 11 12:06:35 2019<br>
@@ -45,18 +45,31 @@<br>
; if they've changed due to a bugfix, change in register allocation, etc.<br>
<br>
; CHECK: [[A]]:<br>
-; CHECK-NEXT: Addr idx 2 (w/ length 15): DW_OP_consts +0, DW_OP_stack_value<br>
-; CHECK-NEXT: Addr idx 3 (w/ length 15): DW_OP_reg0 RAX<br>
-; CHECK-NEXT: Addr idx 4 (w/ length 18): DW_OP_breg7 RSP-8<br>
+; CHECK-NEXT: DW_LLE_startx_length(0x00000002, 0x0000000f)<br>
+; CHECK-NEXT: => Addr idx 2 (w/ length 15): DW_OP_consts +0, DW_OP_stack_value<br>
+; CHECK-NEXT: DW_LLE_startx_length(0x00000003, 0x0000000f)<br>
+; CHECK-NEXT: => Addr idx 3 (w/ length 15): DW_OP_reg0 RAX<br>
+; CHECK-NEXT: DW_LLE_startx_length(0x00000004, 0x00000012)<br>
+; CHECK-NEXT: => Addr idx 4 (w/ length 18): DW_OP_breg7 RSP-8<br>
+; CHECK-NEXT: DW_LLE_end_of_list ()<br>
; CHECK: [[E]]:<br>
-; CHECK-NEXT: Addr idx 5 (w/ length 9): DW_OP_reg0 RAX<br>
-; CHECK-NEXT: Addr idx 6 (w/ length 98): DW_OP_breg7 RSP-44<br>
+; CHECK-NEXT: DW_LLE_startx_length(0x00000005, 0x00000009)<br>
+; CHECK-NEXT: => Addr idx 5 (w/ length 9): DW_OP_reg0 RAX<br>
+; CHECK-NEXT: DW_LLE_startx_length(0x00000006, 0x00000062)<br>
+; CHECK-NEXT: => Addr idx 6 (w/ length 98): DW_OP_breg7 RSP-44<br>
+; CHECK-NEXT: DW_LLE_end_of_list ()<br>
; CHECK: [[B]]:<br>
-; CHECK-NEXT: Addr idx 7 (w/ length 15): DW_OP_reg0 RAX<br>
-; CHECK-NEXT: Addr idx 8 (w/ length 66): DW_OP_breg7 RSP-32<br>
+; CHECK-NEXT: DW_LLE_startx_length(0x00000007, 0x0000000f)<br>
+; CHECK-NEXT: => Addr idx 7 (w/ length 15): DW_OP_reg0 RAX<br>
+; CHECK-NEXT: DW_LLE_startx_length(0x00000008, 0x00000042)<br>
+; CHECK-NEXT: => Addr idx 8 (w/ length 66): DW_OP_breg7 RSP-32<br>
+; CHECK-NEXT: DW_LLE_end_of_list ()<br>
; CHECK: [[D]]:<br>
-; CHECK-NEXT: Addr idx 9 (w/ length 15): DW_OP_reg0 RAX<br>
-; CHECK-NEXT: Addr idx 10 (w/ length 42): DW_OP_breg7 RSP-20<br>
+; CHECK-NEXT: DW_LLE_startx_length(0x00000009, 0x0000000f)<br>
+; CHECK-NEXT: => Addr idx 9 (w/ length 15): DW_OP_reg0 RAX<br>
+; CHECK-NEXT: DW_LLE_startx_length(0x0000000a, 0x0000002a)<br>
+; CHECK-NEXT: => Addr idx 10 (w/ length 42): DW_OP_breg7 RSP-20<br>
+; CHECK-NEXT: DW_LLE_end_of_list ()<br>
<br>
; Make sure we don't produce any relocations in any .dwo section (though in particular, debug_info.dwo)<br>
; HDR-NOT: .rela.{{.*}}.dwo<br>
<br>
Modified: llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loclists_startx_length.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loclists_startx_length.s?rev=374582&r1=374581&r2=374582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loclists_startx_length.s?rev=374582&r1=374581&r2=374582&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loclists_startx_length.s (original)<br>
+++ llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loclists_startx_length.s Fri Oct 11 12:06:35 2019<br>
@@ -8,7 +8,9 @@<br>
# CHECK: .debug_loclists contents:<br>
# CHECK-NEXT: 0x00000000: locations list header: length = 0x0000000e, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x00000000<br>
# CHECK-NEXT: 0x0000000c:<br>
-# CHECK-NEXT: Addr idx 1 (w/ length 16): DW_OP_reg5 RDI<br>
+# CHECK-NEXT: DW_LLE_startx_length(0x0000000000000001, 0x0000000000000010)<br>
+# CHECK-NEXT: => Addr idx 1 (w/ length 16): DW_OP_reg5 RDI<br>
+# CHECK-NEXT: DW_LLE_end_of_list ()<br>
<br>
.section .debug_loclists,"",@progbits<br>
.long .Ldebug_loclist_table_end0-.Ldebug_loclist_table_start0<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div>
</blockquote></div></div>