diff options
author | Mike Pall <mike> | 2022-01-13 14:40:11 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2022-01-13 14:40:11 +0100 |
commit | c8bcf1e5fb8eb72c7e35604fdfd27bba512761bb (patch) | |
tree | d1ac59f1ed86bfceee69058ba554c410e65a8975 | |
parent | e73916d811710ab02a4dfe447d621c99f4e7186c (diff) | |
download | luajit2-c8bcf1e5fb8eb72c7e35604fdfd27bba512761bb.tar.gz |
Fix ABC FOLD rule with constants.
Reported by XmiliaH.
-rw-r--r-- | src/lj_opt_fold.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index 6bb3fc59..1723af60 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c @@ -1682,14 +1682,15 @@ LJFOLDF(abc_fwd) LJFOLD(ABC any KINT) LJFOLDF(abc_k) { + PHIBARRIER(fleft); if (LJ_LIKELY(J->flags & JIT_F_OPT_ABC)) { IRRef ref = J->chain[IR_ABC]; IRRef asize = fins->op1; while (ref > asize) { IRIns *ir = IR(ref); if (ir->op1 == asize && irref_isk(ir->op2)) { - int32_t k = IR(ir->op2)->i; - if (fright->i > k) + uint32_t k = (uint32_t)IR(ir->op2)->i; + if ((uint32_t)fright->i > k) ir->op2 = fins->op2; return DROPFOLD; } |