Invalidate SCEV entry when it is out of scope.

This commit is contained in:
Zhongwei Yao 2023-11-08 15:15:52 -08:00
parent b94fbfbee9
commit 7c964b7ffa

View File

@ -976,6 +976,8 @@ void lj_record_ret(jit_State *J, BCReg rbase, ptrdiff_t gotresults)
emitir(IRTG(IR_RETF, IRT_PGC), trpt, trpc);
J->retdepth++;
J->needsnap = 1;
/* scev entry is invalid after returning to lower frame. */
J->scev.idx = REF_NIL;
lj_assertJ(J->baseslot == 1+LJ_FR2, "bad baseslot for return");
/* Shift result slots up and clear the slots of the new frame below. */
memmove(J->base + cbase, J->base-1-LJ_FR2, sizeof(TRef)*nresults);