]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Add FOLD rule to turn i << 1 into i + i.
authorMike Pall <mike>
Mon, 6 Dec 2010 12:26:58 +0000 (13:26 +0100)
committerMike Pall <mike>
Mon, 6 Dec 2010 12:26:58 +0000 (13:26 +0100)
src/lj_opt_fold.c

index cae4e5e44668512ab5f69ecc4593f2ff3f22dadf..feddba8780fc44b5af9526906e674d1136579c6b 100644 (file)
@@ -859,6 +859,11 @@ LJFOLDF(simplify_shift_ik)
   int32_t k = (fright->i & mask);
   if (k == 0)  /* i o 0 ==> i */
     return LEFTFOLD;
+  if (k == 1 && fins->o == IR_BSHL) {  /* i << 1 ==> i + i */
+    fins->o = IR_ADD;
+    fins->op2 = fins->op1;
+    return RETRYFOLD;
+  }
   if (k != fright->i) {  /* i o k ==> i o (k & mask) */
     fins->op2 = (IRRef1)lj_ir_kint(J, k);
     return RETRYFOLD;