[PATCH] D62314: [DebugInfo] Use FrameDestroy to extend stack locations to the end of a function
Jeremy Morse via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 13 03:02:32 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL363245: [DebugInfo] Use FrameDestroy to extend stack locations to end-of-function (authored by jmorse, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D62314?vs=201209&id=204462#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D62314/new/
https://reviews.llvm.org/D62314
Files:
llvm/trunk/lib/CodeGen/AsmPrinter/DbgEntityHistoryCalculator.cpp
llvm/trunk/test/DebugInfo/COFF/pieces.ll
llvm/trunk/test/DebugInfo/X86/dbg-addr.ll
llvm/trunk/test/DebugInfo/X86/debug-loc-offset.mir
llvm/trunk/test/DebugInfo/X86/pr19307.mir
Index: llvm/trunk/lib/CodeGen/AsmPrinter/DbgEntityHistoryCalculator.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DbgEntityHistoryCalculator.cpp
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DbgEntityHistoryCalculator.cpp
@@ -275,9 +275,12 @@
clobberRegisterUses(RegVars, MO.getReg(), DbgValues, LiveEntries,
MI);
// If this is a register def operand, it may end a debug value
- // range. Ignore defs of the frame register in the prologue.
+ // range. Ignore frame-register defs in the epilogue and prologue,
+ // we expect debuggers to understand that stack-locations are
+ // invalid outside of the function body.
else if (MO.getReg() != FrameReg ||
- !MI.getFlag(MachineInstr::FrameSetup)) {
+ (!MI.getFlag(MachineInstr::FrameDestroy) &&
+ !MI.getFlag(MachineInstr::FrameSetup))) {
for (MCRegAliasIterator AI(MO.getReg(), TRI, true); AI.isValid();
++AI)
clobberRegisterUses(RegVars, *AI, DbgValues, LiveEntries, MI);
Index: llvm/trunk/test/DebugInfo/COFF/pieces.ll
===================================================================
--- llvm/trunk/test/DebugInfo/COFF/pieces.ll
+++ llvm/trunk/test/DebugInfo/COFF/pieces.ll
@@ -104,8 +104,9 @@
; ASM: #APP
; ASM: #NO_APP
; ASM: movl [[offset_o_x]](%rsp), %eax # 4-byte Reload
-; ASM: [[spill_o_x_end:\.Ltmp[0-9]+]]:
; ASM: retq
+; ASM-NEXT: [[spill_o_x_end:\.Ltmp[0-9]+]]:
+; ASM-NEXT: .Lfunc_end4:
; ASM-LABEL: .short 4423 # Record kind: S_GPROC32_ID
@@ -231,7 +232,7 @@
; ASM: .asciz "bitpiece_spill" # Function name
; ASM: .short 4414 # Record kind: S_LOCAL
; ASM: .asciz "o"
-; ASM: .cv_def_range [[spill_o_x_start]] [[spill_o_x_end]], "E\021O\001A\000$\000\000\000"
+; ASM: .cv_def_range [[spill_o_x_start]] .Lfunc_end4, "E\021O\001A\000$\000\000\000"
; OBJ-LABEL: GlobalProcIdSym {
; OBJ: Kind: S_GPROC32_ID (0x1147)
Index: llvm/trunk/test/DebugInfo/X86/dbg-addr.ll
===================================================================
--- llvm/trunk/test/DebugInfo/X86/dbg-addr.ll
+++ llvm/trunk/test/DebugInfo/X86/dbg-addr.ll
@@ -9,12 +9,8 @@
; CHECK-LABEL: use_dbg_addr:
; CHECK: #DEBUG_VALUE: use_dbg_addr:o <- [$rsp+0]
-; FIXME: Avoid the use of a single-location location list and use
-; DW_AT_start_offset instead.
-
; DWARF: DW_TAG_variable
-; DWARF-NEXT: DW_AT_location (0x00000000
-; DWARF-NEXT: [0x{{.*}}, 0x{{.*}}): DW_OP_breg7 RSP+0)
+; DWARF-NEXT: DW_AT_location (DW_OP_fbreg +0)
; DWARF-NEXT: DW_AT_name ("o")
Index: llvm/trunk/test/DebugInfo/X86/pr19307.mir
===================================================================
--- llvm/trunk/test/DebugInfo/X86/pr19307.mir
+++ llvm/trunk/test/DebugInfo/X86/pr19307.mir
@@ -1,11 +1,5 @@
# RUN: llc -o - %s -start-after=patchable-function -O0 | FileCheck %s
-# XFAIL: *
-# Marked XFail due to the removal of "ChangingRegs" from
-# DbgEntityHistoryCalculator, shortening the checked range to not reach the
-# end of the function. Fixed by an about-to-land patch using the FrameDestroy
-# flag to identify the end of functions.
-
# Generated from the source file pr19307.cc:
# #include <string>
# void parse_range(unsigned long long &offset, unsigned long long &limit,
Index: llvm/trunk/test/DebugInfo/X86/debug-loc-offset.mir
===================================================================
--- llvm/trunk/test/DebugInfo/X86/debug-loc-offset.mir
+++ llvm/trunk/test/DebugInfo/X86/debug-loc-offset.mir
@@ -1,11 +1,5 @@
# RUN: llc -o - %s -start-after=patchable-function -filetype=obj -O0 -mtriple=i386-unknown-linux-gnu -dwarf-version=4 | llvm-dwarfdump -v - | FileCheck %s
-# XFAIL: *
-# Marked XFail due to the removal of "ChangingRegs" from
-# DbgEntityHistoryCalculator, shortening the checked range to not reach the
-# end of the function. Fixed by an about-to-land patch using the FrameDestroy
-# flag to identify the end of functions.
-
# From the code:
#
# debug-loc-offset1.cc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D62314.204462.patch
Type: text/x-patch
Size: 4311 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190613/8e211879/attachment-0001.bin>
More information about the llvm-commits
mailing list