[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