aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_opt_fold.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c
index cae4e5e4..feddba87 100644
--- a/src/lj_opt_fold.c
+++ b/src/lj_opt_fold.c
@@ -859,6 +859,11 @@ LJFOLDF(simplify_shift_ik)
859 int32_t k = (fright->i & mask); 859 int32_t k = (fright->i & mask);
860 if (k == 0) /* i o 0 ==> i */ 860 if (k == 0) /* i o 0 ==> i */
861 return LEFTFOLD; 861 return LEFTFOLD;
862 if (k == 1 && fins->o == IR_BSHL) { /* i << 1 ==> i + i */
863 fins->o = IR_ADD;
864 fins->op2 = fins->op1;
865 return RETRYFOLD;
866 }
862 if (k != fright->i) { /* i o k ==> i o (k & mask) */ 867 if (k != fright->i) { /* i o k ==> i o (k & mask) */
863 fins->op2 = (IRRef1)lj_ir_kint(J, k); 868 fins->op2 = (IRRef1)lj_ir_kint(J, k);
864 return RETRYFOLD; 869 return RETRYFOLD;