From 10e2e7de0c0cb73a71eb0047f0a23db1f91361dc Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Fri, 15 May 2020 16:09:20 -0700 Subject: [PATCH] [WebAssembly] iterate stack in DebugFixup from the top. Differential Revision: https://reviews.llvm.org/D80045 --- llvm/lib/Target/WebAssembly/WebAssemblyDebugFixup.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyDebugFixup.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyDebugFixup.cpp index 8f1f77e..655e30a 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyDebugFixup.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyDebugFixup.cpp @@ -86,9 +86,9 @@ bool WebAssemblyDebugFixup::runOnMachineFunction(MachineFunction &MF) { // Search for register rather than assume it is on top (which it // typically is if it appears right after the def), since // DBG_VALUE's may shift under some circumstances. - size_t Depth = 0; - for (auto &Elem : Stack) { + for (auto &Elem : reverse(Stack)) { if (MO.getReg() == Elem.Reg) { + auto Depth = static_cast(&Elem - &Stack[0]); LLVM_DEBUG(dbgs() << "Debug Value VReg " << MO.getReg() << " -> Stack Relative " << Depth << "\n"); MO.ChangeToTargetIndex(WebAssembly::TI_OPERAND_STACK, Depth); @@ -98,7 +98,6 @@ bool WebAssemblyDebugFixup::runOnMachineFunction(MachineFunction &MF) { Elem.DebugValue = &MI; break; } - Depth++; } // If the Reg was not found, we have a DBG_VALUE outside of its // def-use range, and we leave it unmodified as reg, which means -- 2.7.4