diff options
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/ByteStreamer.h | 2 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/X86/convert-loclist.ll | 24 |
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 |
