[DebugInfo] Reflect switched variable order from instruction referencing

Enabling instruction referencing causes a few variable locations to switch
order -- i.e., they switch position in the output DWARF, or sometimes the
order of DBG_VALUEs. Update a few tests to reflect this.

Differential Revision: https://reviews.llvm.org/D114261
This commit is contained in:
Jeremy Morse 2021-11-24 17:05:39 +00:00
parent f935203496
commit eb00e79bd9
5 changed files with 42 additions and 37 deletions

View File

@ -1,32 +1,32 @@
; RUN: llc -mtriple=x86_64-pc-linux -filetype=obj -function-sections -o %t -experimental-debug-variable-locations=false < %s
; RUN: llc -mtriple=x86_64-pc-linux -filetype=obj -function-sections -o %t -experimental-debug-variable-locations=true < %s
; RUN: llvm-dwarfdump -v -debug-info -debug-loclists %t | \
; RUN: FileCheck %s --check-prefixes=CHECK,DWARF32
; RUN: llc -dwarf64 -mtriple=x86_64-pc-linux -filetype=obj -function-sections -o %t -experimental-debug-variable-locations=false < %s
; RUN: llc -dwarf64 -mtriple=x86_64-pc-linux -filetype=obj -function-sections -o %t -experimental-debug-variable-locations=true < %s
; RUN: llvm-dwarfdump -v -debug-info -debug-loclists %t | \
; RUN: FileCheck %s --check-prefixes=CHECK,DWARF64
; RUN: llc -dwarf-version=5 -split-dwarf-file=foo.dwo -mtriple=x86_64-pc-linux -filetype=obj -function-sections -o %t -experimental-debug-variable-locations=false < %s
; RUN: llc -dwarf-version=5 -split-dwarf-file=foo.dwo -mtriple=x86_64-pc-linux -filetype=obj -function-sections -o %t -experimental-debug-variable-locations=true < %s
; RUN: llvm-dwarfdump -v -debug-info -debug-loclists %t | \
; RUN: FileCheck %s --check-prefixes=DWO,DWO32
; RUN: llc -dwarf64 -dwarf-version=5 -split-dwarf-file=foo.dwo -mtriple=x86_64-pc-linux -filetype=obj -function-sections -o %t -experimental-debug-variable-locations=false < %s
; RUN: llc -dwarf64 -dwarf-version=5 -split-dwarf-file=foo.dwo -mtriple=x86_64-pc-linux -filetype=obj -function-sections -o %t -experimental-debug-variable-locations=true < %s
; RUN: llvm-dwarfdump -v -debug-info -debug-loclists %t | \
; RUN: FileCheck %s --check-prefixes=DWO,DWO64
; CHECK: DW_TAG_variable
; DWARF32-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000018:
; DWARF64-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x0000002c:
; CHECK-NEXT: [0x0000000000000000, 0x0000000000000003) ".text._Z2f1ii": DW_OP_consts +5, DW_OP_stack_value)
; CHECK-NEXT: DW_AT_name {{.*}} "x"
; CHECK: DW_TAG_variable
; DWARF32-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000020:
; DWARF64-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000034:
; CHECK-NEXT: [0x0000000000000000, 0x0000000000000003) ".text._Z2f1ii": DW_OP_consts +3, DW_OP_stack_value
; CHECK-NEXT: [0x0000000000000003, 0x0000000000000004) ".text._Z2f1ii": DW_OP_consts +4, DW_OP_stack_value)
; CHECK-NEXT: DW_AT_name {{.*}} "y"
; CHECK: DW_TAG_variable
; DWARF32-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000029:
; DWARF64-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x0000003d:
; CHECK-NEXT: [0x0000000000000000, 0x0000000000000003) ".text._Z2f1ii": DW_OP_consts +5, DW_OP_stack_value)
; CHECK-NEXT: DW_AT_name {{.*}} "x"
; CHECK: DW_TAG_variable
; DWARF32-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000031:
; DWARF64-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000045:
@ -43,31 +43,33 @@
; CHECK-NEXT: offsets: [
; DWARF32-NEXT: 0x0000000c => 0x00000018
; DWARF32-NEXT: 0x0000001d => 0x00000029
; DWARF32-NEXT: 0x00000014 => 0x00000020
; DWARF32-NEXT: 0x00000025 => 0x00000031
; DWARF64-NEXT: 0x0000000000000018 => 0x0000002c
; DWARF64-NEXT: 0x0000000000000029 => 0x0000003d
; DWARF64-NEXT: 0x0000000000000020 => 0x00000034
; DWARF64-NEXT: 0x0000000000000031 => 0x00000045
; CHECK-NEXT: ]
; DWARF32-NEXT: 0x00000018:
; DWARF64-NEXT: 0x0000002c:
; Show that startx_length can be used when the address range starts at the start of the function.
; CHECK-NEXT: DW_LLE_startx_length (0x0000000000000000, 0x0000000000000003): DW_OP_consts +5, DW_OP_stack_value
; CHECK-NEXT: DW_LLE_end_of_list ()
; Don't use startx_length if there's more than one entry, because the shared
; base address will be useful for both the range that does start at the start of
; the function, and the one that doesn't.
; DWARF32-NEXT: 0x00000018:
; DWARF64-NEXT: 0x0000002c:
; DWARF32: 0x00000020:
; DWARF64: 0x00000034:
; CHECK-NEXT: DW_LLE_base_addressx (0x0000000000000000)
; CHECK-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000003): DW_OP_consts +3, DW_OP_stack_value
; CHECK-NEXT: DW_LLE_offset_pair (0x0000000000000003, 0x0000000000000004): DW_OP_consts +4, DW_OP_stack_value
; CHECK-NEXT: DW_LLE_end_of_list ()
; Show that startx_length can be used when the address range starts at the start of the function.
; DWARF32: 0x00000029:
; DWARF64: 0x0000003d:
; CHECK-NEXT: DW_LLE_startx_length (0x0000000000000000, 0x0000000000000003): DW_OP_consts +5, DW_OP_stack_value
; CHECK-NEXT: DW_LLE_end_of_list ()
; And use a base address when the range doesn't start at an existing/useful
; address in the pool.

View File

@ -1,8 +1,11 @@
; RUN: llc %s -mtriple=x86_64-unknown-linux-gnu --dwarf-version=4 --basic-block-sections=none -filetype=obj -o - -experimental-debug-variable-locations=false | llvm-dwarfdump - | FileCheck %s
; RUN: llc %s -mtriple=x86_64-unknown-linux-gnu --dwarf-version=4 --basic-block-sections=all -filetype=obj -o - -experimental-debug-variable-locations=false | llvm-dwarfdump - | FileCheck %s
; RUN: llc %s -mtriple=x86_64-unknown-linux-gnu --dwarf-version=5 --basic-block-sections=none -filetype=obj -o - -experimental-debug-variable-locations=false | llvm-dwarfdump - | FileCheck %s
; RUN: llc %s -mtriple=x86_64-unknown-linux-gnu --dwarf-version=5 --basic-block-sections=all -filetype=obj -o - -experimental-debug-variable-locations=false| llvm-dwarfdump - | FileCheck %s
; RUN: llc %s -mtriple=x86_64-unknown-linux-gnu --dwarf-version=4 --basic-block-sections=none -filetype=obj -o - -experimental-debug-variable-locations=true | llvm-dwarfdump - | FileCheck %s
; RUN: llc %s -mtriple=x86_64-unknown-linux-gnu --dwarf-version=4 --basic-block-sections=all -filetype=obj -o - -experimental-debug-variable-locations=true | llvm-dwarfdump - | FileCheck %s
; RUN: llc %s -mtriple=x86_64-unknown-linux-gnu --dwarf-version=5 --basic-block-sections=none -filetype=obj -o - -experimental-debug-variable-locations=true | llvm-dwarfdump - | FileCheck %s
; RUN: llc %s -mtriple=x86_64-unknown-linux-gnu --dwarf-version=5 --basic-block-sections=all -filetype=obj -o - -experimental-debug-variable-locations=true| llvm-dwarfdump - | FileCheck %s
; CHECK: DW_TAG_variable
; CHECK-NOT: DW_TAG
; CHECK: DW_AT_name ("tmp")
; CHECK: DW_TAG_variable
; CHECK-NEXT: DW_AT_location
; CHECK-NEXT: [0x{{[0-9a-f]+}}, 0x{{[0-9a-f]+}}): DW_OP_reg3

View File

@ -1,12 +1,13 @@
; RUN: llc -filetype=obj %s -o - -experimental-debug-variable-locations=false | llvm-dwarfdump -v -debug-info - | FileCheck %s
; RUN: llc -filetype=obj %s -o - -experimental-debug-variable-locations=true | llvm-dwarfdump -v -debug-info - | FileCheck %s
; A hand-written testcase to check 64-bit constant handling in location lists.
; CHECK: .debug_info contents:
; CHECK: DW_TAG_variable
; CHECK-NEXT: DW_AT_location [DW_FORM_data4] (
; CHECK-NEXT: {{.*}}: DW_OP_lit0
; CHECK-NEXT: {{.*}}: DW_OP_constu 0x4000000000000000)
; CHECK-NEXT: DW_AT_name {{.*}}"d"
; CHECK-NEXT: DW_AT_name {{.*}}"u"
; CHECK: DW_TAG_variable
; CHECK-NEXT: DW_AT_location [DW_FORM_data4] (
; CHECK-NEXT: {{.*}}: DW_OP_consts +0
@ -14,9 +15,8 @@
; CHECK-NEXT: DW_AT_name {{.*}}"i"
; CHECK: DW_TAG_variable
; CHECK-NEXT: DW_AT_location [DW_FORM_data4] (
; CHECK-NEXT: {{.*}}: DW_OP_lit0
; CHECK-NEXT: {{.*}}: DW_OP_constu 0x4000000000000000)
; CHECK-NEXT: DW_AT_name {{.*}}"u"
; CHECK-NEXT: DW_AT_name {{.*}}"d"
source_filename = "test.c"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"

View File

@ -1,5 +1,5 @@
; RUN: llc %s -stop-after=livedebugvalues -o - -experimental-debug-variable-locations=false | FileCheck --check-prefix=SANITY %s
; RUN: llc < %s -filetype=obj -experimental-debug-variable-locations=false | llvm-dwarfdump -v - | FileCheck %s
; RUN: llc %s -stop-after=livedebugvalues -o - -experimental-debug-variable-locations=true | FileCheck --check-prefix=SANITY %s
; RUN: llc < %s -filetype=obj -experimental-debug-variable-locations=true | llvm-dwarfdump -v - | FileCheck %s
; Test debug_loc support for floating point constants.
;
; Created from clang -O1:
@ -14,17 +14,17 @@
; }
;
; SANITY: CALL{{.*}} @barrier
; SANITY: DBG_VALUE x86_fp80 0xK4000C8F5C28F5C28F800
; SANITY: DBG_VALUE float 0x40091EB860000000
; SANITY: DBG_VALUE x86_fp80 0xK4000C8F5C28F5C28F800
; SANITY: TAILJMP{{.*}} @barrier
;
; CHECK: .debug_info contents:
; CHECK: DW_TAG_variable
; CHECK-NEXT: DW_AT_name {{.*}}"ld"
; CHECK: DW_TAG_variable
; CHECK-NEXT: DW_AT_location {{.*}} (
; CHECK-NEXT: [0x{{.*}}, 0x{{.*}}): DW_OP_constu 0x4048f5c3)
; CHECK-NEXT: DW_AT_name {{.*}}"f"
; CHECK: DW_TAG_variable
; CHECK-NEXT: DW_AT_name {{.*}}"ld"
source_filename = "test.c"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"

View File

@ -1,5 +1,5 @@
; RUN: llc < %s -experimental-debug-variable-locations=false | FileCheck %s
; RUN: llc -filetype=obj < %s -experimental-debug-variable-locations=false | llvm-dwarfdump -debug-loc - | FileCheck %s --check-prefix=DWARF
; RUN: llc < %s -experimental-debug-variable-locations=true | FileCheck %s
; RUN: llc -filetype=obj < %s -experimental-debug-variable-locations=true | llvm-dwarfdump -debug-loc - | FileCheck %s --check-prefix=DWARF
; Compile the following with -O1:
@ -16,8 +16,8 @@
; CHECK-LABEL: bitpiece_spill: # @bitpiece_spill
; CHECK: callq g
; CHECK: movl %eax, [[offs:[0-9]+]](%rsp) # 4-byte Spill
; CHECK: #DEBUG_VALUE: bitpiece_spill:o <- [DW_OP_LLVM_fragment 32 32] 0
; CHECK: #DEBUG_VALUE: bitpiece_spill:o <- [DW_OP_plus_uconst [[offs]], DW_OP_LLVM_fragment 0 32] [$rsp+0]
; CHECK: #DEBUG_VALUE: bitpiece_spill:o <- [DW_OP_LLVM_fragment 32 32] 0
; CHECK: #APP
; CHECK: #NO_APP
; CHECK: movl [[offs]](%rsp), %eax # 4-byte Reload