]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Fix handling of instable types in TNEW/TDUP load forwarding.
authorMike Pall <mike>
Fri, 2 Jun 2023 09:38:45 +0000 (11:38 +0200)
committerMike Pall <mike>
Fri, 2 Jun 2023 09:38:45 +0000 (11:38 +0200)
Analyzed by Sergey Kaplun. #994

src/lj_opt_mem.c

index 5b1ad898d8cc082ea1768e4da2e9e060f2112806..9d83ea4a0ad30549ec58242245c40ab24ba6b86b 100644 (file)
@@ -197,7 +197,8 @@ static TRef fwd_ahload(jit_State *J, IRRef xref)
        if (key->o == IR_KSLOT) key = IR(key->op1);
        lj_ir_kvalue(J->L, &keyv, key);
        tv = lj_tab_get(J->L, ir_ktab(IR(ir->op1)), &keyv);
-       lua_assert(itype2irt(tv) == irt_type(fins->t));
+       if (itype2irt(tv) != irt_type(fins->t))
+         return 0;  /* Type instability in loop-carried dependency. */
        if (irt_isnum(fins->t))
          return lj_ir_knum_u64(J, tv->u64);
        else if (LJ_DUALNUM && irt_isint(fins->t))