aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/ByteStreamer.h2
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp2
-rw-r--r--llvm/test/DebugInfo/X86/convert-loclist.ll24
3 files changed, 23 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/ByteStreamer.h b/llvm/lib/CodeGen/AsmPrinter/ByteStreamer.h
index 09f7496..b60f68c 100644
--- a/llvm/lib/CodeGen/AsmPrinter/ByteStreamer.h
+++ b/llvm/lib/CodeGen/AsmPrinter/ByteStreamer.h
@@ -50,7 +50,7 @@ public:
}
void EmitULEB128(uint64_t DWord, const Twine &Comment, unsigned PadTo) override {
AP.OutStreamer->AddComment(Comment);
- AP.EmitULEB128(DWord);
+ AP.EmitULEB128(DWord, nullptr, PadTo);
}
};
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 0923394..447d3fa 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -2241,7 +2241,7 @@ void DwarfDebug::emitDebugLocEntry(ByteStreamer &Streamer,
uint64_t Offset =
CU->ExprRefedBaseTypes[Op.getRawOperand(I)].Die->getOffset();
assert(Offset < (1ULL << (ULEB128PadSize * 7)) && "Offset wont fit");
- Asm->EmitULEB128(Offset, nullptr, ULEB128PadSize);
+ Streamer.EmitULEB128(Offset, "", ULEB128PadSize);
// Make sure comments stay aligned.
for (unsigned J = 0; J < ULEB128PadSize; ++J)
if (Comment != End)
diff --git a/llvm/test/DebugInfo/X86/convert-loclist.ll b/llvm/test/DebugInfo/X86/convert-loclist.ll
index 1d5b6f9..e510cd6 100644
--- a/llvm/test/DebugInfo/X86/convert-loclist.ll
+++ b/llvm/test/DebugInfo/X86/convert-loclist.ll
@@ -1,8 +1,26 @@
-; RUN: llc -dwarf-version=5 -filetype=obj -O0 < %s | llvm-dwarfdump -debug-info -debug-loclists - | FileCheck %s
-; RUN: llc -dwarf-version=5 -split-dwarf-file=foo.dwo -filetype=obj -O0 < %s | llvm-dwarfdump -debug-info -debug-loclists - | FileCheck %s
+; RUN: llc -dwarf-version=5 -filetype=obj -O0 < %s \
+; RUN: | llvm-dwarfdump -debug-info -debug-loclists - | FileCheck %s
+; RUN: llc -dwarf-version=5 -split-dwarf-file=foo.dwo -filetype=obj -O0 < %s \
+; RUN: | llvm-dwarfdump -debug-info -debug-loclists - | FileCheck --check-prefix=CHECK --check-prefix=SPLIT %s
+; RUN: llc -dwarf-version=5 -split-dwarf-file=foo.dwo -filetype=asm -O0 < %s | FileCheck --check-prefix=ASM %s
+
+; A bit of a brittle test - this is testing the specific DWO_id. The
+; alternative would be to test two files with different DW_OP_convert values &
+; ensuring the DWO IDs differ when the DW_OP_convert parameter differs.
+
+; So if this test ends up being a brittle pain to maintain, updating the DWO ID
+; often - add another IR file with a different DW_OP_convert that's otherwise
+; identical and demonstrate that they have different DWO IDs.
+
+; SPLIT: 0x00000000: Compile Unit: {{.*}} DWO_id = 0xafd73565c68bc661
+
+; Regression testing a fairly quirky bug where instead of hashing (see above),
+; extra bytes would be emitted into the output assembly in no
+; particular/intentional section - so let's check they don't show up at all:
+; ASM-NOT: .asciz "\200\200\200"
; CHECK: 0x{{0*}}[[TYPE:.*]]: DW_TAG_base_type
-; CHECK-NEXT: DW_AT_name ("DW_ATE_unsigned_32")
+; CHECK-NEXT: DW_AT_name ("DW_ATE_unsigned_32")
; CHECK: DW_LLE_offset_pair ({{.*}}): DW_OP_consts +7, DW_OP_convert 0x[[TYPE]], DW_OP_stack_value