[PATCH] D139579: [WebAssembly] Print DEBUG_VALUE once for target indices
Heejin Ahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 7 14:17:29 PST 2022
aheejin created this revision.
aheejin added a reviewer: dschuff.
Herald added subscribers: pmatos, asb, wingo, ecnelises, sunfish, hiraditya, jgravelle-google, sbc100.
Herald added a project: All.
aheejin requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
`DEBUG_VALUE` comments are printed before an instruction, so they are
not printed with `AddComment` method as other comments are, but printed
using `emitRawComment` method. But currently `emitDebugValueComment`
calls `emitRawComment` twice for target-index-based `DBG_VALUE`s: once
in the `switch`-`case`,
https://github.com/llvm/llvm-project/blob/d77ae7f2513504655e555cd326208598093d66e2/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp#L1192-L1193
and again at the end of the method:
https://github.com/llvm/llvm-project/blob/d77ae7f2513504655e555cd326208598093d66e2/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp#L1227-L1228
This makes them printed twice. I think this happened through multiple
modifications modifying and refactoring this method.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D139579
Files:
llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
llvm/test/DebugInfo/WebAssembly/dbg-value-comment.mir
Index: llvm/test/DebugInfo/WebAssembly/dbg-value-comment.mir
===================================================================
--- /dev/null
+++ llvm/test/DebugInfo/WebAssembly/dbg-value-comment.mir
@@ -0,0 +1,51 @@
+# RUN: llc -start-after wasm-debug-fixup %s -o - | FileCheck %s
+
+# Test if '#DEBUG_VALUE' comments for target indices are printed correctly.
+
+--- |
+ target triple = "wasm32-unknown-unknown"
+
+ define void @test_dbg_value_comment() !dbg !5 {
+ call void @llvm.dbg.value(metadata i32 0, metadata !9, metadata !DIExpression()), !dbg !10
+ call void @llvm.dbg.value(metadata i32 0, metadata !11, metadata !DIExpression()), !dbg !10
+ ret void
+ }
+
+ declare void @llvm.dbg.value(metadata, metadata, metadata)
+
+ !llvm.dbg.cu = !{!0}
+ !llvm.module.flags = !{!2, !3, !4}
+
+ !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, emissionKind: FullDebug)
+ !1 = !DIFile(filename: "test.c", directory: "")
+ !2 = !{i32 7, !"Dwarf Version", i32 5}
+ !3 = !{i32 2, !"Debug Info Version", i32 3}
+ !4 = !{i32 1, !"wchar_size", i32 4}
+ !5 = distinct !DISubprogram(name: "test_dbg_value_comment", scope: !1, file: !1, line: 1, type: !6, scopeLine: 1, unit: !0)
+ !6 = !DISubroutineType(types: !7)
+ !7 = !{!8}
+ !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
+ !9 = !DILocalVariable(name: "var0", scope: !5, file: !1, line: 2, type: !8)
+ !10 = !DILocation(line: 0, scope: !5)
+ !11 = !DILocalVariable(name: "var1", scope: !5, file: !1, line: 2, type: !8)
+...
+
+---
+# CHECK-LABEL: .globl test_dbg_value_comment
+name: test_dbg_value_comment
+liveins:
+ - { reg: '$arguments' }
+body: |
+ ; One '#DEBUG_VALUE' comment should be printed per one 'DBG_VALUE'
+ ; instruction. There was a bug that makes this printed twice for
+ ; target-index-based 'DBG_VALUE's.
+ ; CHECK: bb.0:
+ ; CHECK-NEXT: #DEBUG_VALUE: test_dbg_value_comment:var0 <- !target-index(0,1)
+ ; CHECK-NEXT: #DEBUG_VALUE: test_dbg_value_comment:var1 <- !target-index(2,2)
+ ; CHECK-NEXT: return
+ bb.0:
+ liveins: $arguments
+ DBG_VALUE target-index(wasm-local) + 1, $noreg, !9, !DIExpression(), debug-location !10
+ DBG_VALUE target-index(wasm-operand-stack) + 2, $noreg, !11, !DIExpression(), debug-location !10
+ RETURN implicit-def dead $arguments
+...
Index: llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
===================================================================
--- llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1179,8 +1179,6 @@
}
case MachineOperand::MO_TargetIndex: {
OS << "!target-index(" << Op.getIndex() << "," << Op.getOffset() << ")";
- // NOTE: Want this comment at start of line, don't emit with AddComment.
- AP.OutStreamer->emitRawComment(OS.str());
break;
}
case MachineOperand::MO_Register:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D139579.481062.patch
Type: text/x-patch
Size: 2869 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221207/9daca026/attachment.bin>
More information about the llvm-commits
mailing list