[PATCH] D90001: [llvm/DebugInfo] Emit DW_OP_implicit_value when tuning for LLDB
Med Ismail Bennani via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 23 21:44:40 PDT 2020
mib updated this revision to Diff 300457.
mib added a comment.
Add negative test for `-debugger-tune=sce`.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90001/new/
https://reviews.llvm.org/D90001
Files:
llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
llvm/test/DebugInfo/X86/implicit_value-double.ll
llvm/test/DebugInfo/X86/implicit_value-float.ll
llvm/test/DebugInfo/X86/stack-value-piece.ll
Index: llvm/test/DebugInfo/X86/stack-value-piece.ll
===================================================================
--- llvm/test/DebugInfo/X86/stack-value-piece.ll
+++ llvm/test/DebugInfo/X86/stack-value-piece.ll
@@ -26,15 +26,15 @@
; CHECK: DW_AT_name ("f")
; CHECK: DW_TAG_variable
; CHECK-NEXT: DW_AT_location ([[F:0x[0-9a-f]+]]
-; CHECK-NEXT: [{{.*}}, {{.*}}): DW_OP_reg17 XMM0, DW_OP_piece 0x4, DW_OP_lit0, DW_OP_stack_value, DW_OP_piece 0x4
-; CHECK-NEXT: [{{.*}}, {{.*}}): DW_OP_piece 0x4, DW_OP_lit0, DW_OP_stack_value, DW_OP_piece 0x4)
+; CHECK-NEXT: [{{.*}}, {{.*}}): DW_OP_reg17 XMM0, DW_OP_piece 0x4, {{(DW_OP_lit0, DW_OP_stack_value, DW_OP_piece 0x4|DW_OP_implicit_value 0x4 0x00 0x00 0x00 0x00)}}
+; CHECK-NEXT: [{{.*}}, {{.*}}): DW_OP_piece 0x4, {{(DW_OP_lit0, DW_OP_stack_value, DW_OP_piece 0x4|DW_OP_implicit_value 0x4 0x00 0x00 0x00 0x00)}})
; CHECK-NEXT: DW_AT_name ("r")
;
; CHECK: .debug_loc contents:
; CHECK: [[I]]:
; CHECK-NEXT: ({{.*}}, {{.*}}): DW_OP_reg5 RDI, DW_OP_piece 0x4, DW_OP_lit0, DW_OP_stack_value, DW_OP_piece 0x4
; CHECK: [[F]]:
-; CHECK-NEXT: ({{.*}}, {{.*}}): DW_OP_reg17 XMM0, DW_OP_piece 0x4, DW_OP_lit0, DW_OP_stack_value, DW_OP_piece 0x4
+; CHECK-NEXT: ({{.*}}, {{.*}}): DW_OP_reg17 XMM0, DW_OP_piece 0x4, {{DW_OP_lit0, DW_OP_stack_value, DW_OP_piece 0x4|DW_OP_implicit_value 0x4 0x00 0x00 0x00 0x00}}
source_filename = "stack-value-piece.c"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
Index: llvm/test/DebugInfo/X86/implicit_value-float.ll
===================================================================
--- llvm/test/DebugInfo/X86/implicit_value-float.ll
+++ llvm/test/DebugInfo/X86/implicit_value-float.ll
@@ -1,7 +1,8 @@
;; This test checks for emission of DW_OP_implicit_value operation
;; for float type.
-; RUN: llc -debugger-tune=gdb -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
+; RUN: llc -debugger-tune=gdb -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
+; RUN: llc -debugger-tune=lldb -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
; CHECK: .debug_info contents:
; CHECK: DW_TAG_variable
@@ -9,6 +10,14 @@
; CHECK-NEXT: [{{.*}}): DW_OP_implicit_value 0x4 0xc3 0xf5 0x48 0x40)
; CHECK-NEXT: DW_AT_name ("f")
+; RUN: llc -debugger-tune=sce -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s -check-prefix=SCE-CHECK
+
+; SCE-CHECK: .debug_info contents:
+; SCE-CHECK: DW_TAG_variable
+; SCE-CHECK-NEXT: DW_AT_location ({{.*}}
+; SCE-CHECK-NEXT: [{{.*}}): DW_OP_constu 0x4048f5c3, DW_OP_stack_value)
+; SCE-CHECK-NEXT: DW_AT_name ("f")
+
;; Generated from: clang -ggdb -O1
;;int main() {
;; float f = 3.14f;
Index: llvm/test/DebugInfo/X86/implicit_value-double.ll
===================================================================
--- llvm/test/DebugInfo/X86/implicit_value-double.ll
+++ llvm/test/DebugInfo/X86/implicit_value-double.ll
@@ -1,7 +1,8 @@
;; This test checks for emission of DW_OP_implicit_value operation
;; for double type.
-; RUN: llc -debugger-tune=gdb -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
+; RUN: llc -debugger-tune=gdb -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
+; RUN: llc -debugger-tune=lldb -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
; CHECK: .debug_info contents:
; CHECK: DW_TAG_variable
@@ -9,6 +10,14 @@
; CHECK-NEXT: [{{.*}}): DW_OP_implicit_value 0x8 0x1f 0x85 0xeb 0x51 0xb8 0x1e 0x09 0x40)
; CHECK-NEXT: DW_AT_name ("d")
+; RUN: llc -debugger-tune=sce -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s -check-prefix=SCE-CHECK
+
+; SCE-CHECK: .debug_info contents:
+; SCE-CHECK: DW_TAG_variable
+; SCE-CHECK-NEXT: DW_AT_location ({{.*}}
+; SCE-CHECK-NEXT: [{{.*}}): DW_OP_constu 0x40091eb851eb851f, DW_OP_stack_value)
+; SCE-CHECK-NEXT: DW_AT_name ("d")
+
;; Generated from: clang -ggdb -O1
;;int main() {
;; double d = 3.14;
Index: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
===================================================================
--- llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -2480,7 +2480,8 @@
DwarfExpr.addExpression(std::move(ExprCursor));
return;
} else if (Value.isConstantFP()) {
- if (AP.getDwarfVersion() >= 4 && AP.getDwarfDebug()->tuneForGDB()) {
+ if (AP.getDwarfVersion() >= 4 && (AP.getDwarfDebug()->tuneForGDB() ||
+ AP.getDwarfDebug()->tuneForLLDB())) {
DwarfExpr.addConstantFP(Value.getConstantFP()->getValueAPF(), AP);
return;
} else if (Value.getConstantFP()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90001.300457.patch
Type: text/x-patch
Size: 4727 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201024/c9fa8209/attachment.bin>
More information about the llvm-commits
mailing list