From 63ec3d4c8072ace64deb3f1d6b8ec2ecdd076951 Mon Sep 17 00:00:00 2001 From: Andy Ayers Date: Fri, 6 Feb 2026 16:21:39 -0800 Subject: [PATCH] [Wasm Ryujit] Wasm SP is implicitly referenced Fixes an issue where SP mentions are introduced late (say from a throw helper). --- src/coreclr/jit/lclvars.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/coreclr/jit/lclvars.cpp b/src/coreclr/jit/lclvars.cpp index c41b8e9e8a358d..9eb16d39466b34 100644 --- a/src/coreclr/jit/lclvars.cpp +++ b/src/coreclr/jit/lclvars.cpp @@ -508,11 +508,12 @@ void Compiler::lvaInitRetBuffArg(unsigned* curVarNum, bool useFixedRetBufReg) // void Compiler::lvaInitWasmStackPtrArg(unsigned* curVarNum) { - LclVarDsc* varDsc = lvaGetDesc(*curVarNum); - varDsc->lvType = TYP_I_IMPL; - varDsc->lvIsParam = 1; - varDsc->lvOnFrame = true; - lvaWasmSpArg = *curVarNum; + LclVarDsc* varDsc = lvaGetDesc(*curVarNum); + varDsc->lvType = TYP_I_IMPL; + varDsc->lvIsParam = 1; + varDsc->lvOnFrame = true; + varDsc->lvImplicitlyReferenced = 1; + lvaWasmSpArg = *curVarNum; (*curVarNum)++; } @@ -525,8 +526,10 @@ void Compiler::lvaAllocWasmStackPtr() { if (lvaWasmSpArg == BAD_VAR_NUM) { - lvaWasmSpArg = lvaGrabTemp(false DEBUGARG("SP")); - lvaGetDesc(lvaWasmSpArg)->lvType = TYP_I_IMPL; + lvaWasmSpArg = lvaGrabTemp(false DEBUGARG("SP")); + LclVarDsc* varDsc = lvaGetDesc(lvaWasmSpArg); + varDsc->lvType = TYP_I_IMPL; + varDsc->lvImplicitlyReferenced = 1; } }