[llvm] a66451e - [WebAssembly] Fix debug locations for ExplicitLocals pass
Wouter van Oortmerssen via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 28 12:36:11 PDT 2021
Author: Wouter van Oortmerssen
Date: 2021-10-28T12:35:46-07:00
New Revision: a66451ebbe450a5e9dc6baf0c4e9f5738df589a2
URL: https://github.com/llvm/llvm-project/commit/a66451ebbe450a5e9dc6baf0c4e9f5738df589a2
DIFF: https://github.com/llvm/llvm-project/commit/a66451ebbe450a5e9dc6baf0c4e9f5738df589a2.diff
LOG: [WebAssembly] Fix debug locations for ExplicitLocals pass
Differential Revision: https://reviews.llvm.org/D112487
Added:
Modified:
llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
llvm/test/MC/WebAssembly/debug-localvar.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
index a933d1a4f421..da8b742ce833 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
@@ -379,8 +379,13 @@ bool WebAssemblyExplicitLocals::runOnMachineFunction(MachineFunction &MF) {
const TargetRegisterClass *RC = MRI.getRegClass(OldReg);
Register NewReg = MRI.createVirtualRegister(RC);
unsigned Opc = getLocalGetOpcode(RC);
+ // Use a blank DebugLoc, because InsertPt may be discontinuous from
+ // the usage of this value, causing non-linear stepping in the
+ // debugger or function entry points where variables aren't live yet.
+ // See crbug.com/1251909, crbug.com/1249745
+ DebugLoc DL;
InsertPt =
- BuildMI(MBB, InsertPt, MI.getDebugLoc(), TII->get(Opc), NewReg)
+ BuildMI(MBB, InsertPt, DL, TII->get(Opc), NewReg)
.addImm(LocalId);
MO.setReg(NewReg);
MFI.stackifyVReg(MRI, NewReg);
diff --git a/llvm/test/MC/WebAssembly/debug-localvar.ll b/llvm/test/MC/WebAssembly/debug-localvar.ll
index 0174b7342fc3..1de972b28868 100644
--- a/llvm/test/MC/WebAssembly/debug-localvar.ll
+++ b/llvm/test/MC/WebAssembly/debug-localvar.ll
@@ -101,8 +101,8 @@ attributes #2 = { nounwind }
; CHECK-NEXT: DW_AT_type (0x00000073 "int")
; CHECK-LABEL: DW_TAG_lexical_block
-; CHECK-NEXT: DW_AT_low_pc (0x0000001c)
-; CHECK-NEXT: DW_AT_high_pc (0x0000002d)
+; CHECK-NEXT: DW_AT_low_pc (0x0000001e)
+; CHECK-NEXT: DW_AT_high_pc (0x0000002f)
; CHECK-LABEL: DW_TAG_variable
; CHECK-NEXT: DW_AT_location (DW_OP_fbreg +4)
More information about the llvm-commits
mailing list