aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lj_opt_fold.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c
index cf5de82f..8fc646c9 100644
--- a/src/lj_opt_fold.c
+++ b/src/lj_opt_fold.c
@@ -983,6 +983,20 @@ LJFOLDF(reassoc_intarith_k)
983 return NEXTFOLD; 983 return NEXTFOLD;
984} 984}
985 985
986LJFOLD(ADD ADD KINT64)
987LJFOLDF(reassoc_intarith_k64)
988{
989 IRIns *irk = IR(fleft->op2);
990 if (irk->o == IR_KINT64) {
991 uint64_t k = ir_kint64(irk)->u64 + ir_kint64(fright)->u64;
992 PHIBARRIER(fleft);
993 fins->op1 = fleft->op1;
994 fins->op2 = (IRRef1)lj_ir_kint64(J, k);
995 return RETRYFOLD; /* (i o k1) o k2 ==> i o (k1 o k2) */
996 }
997 return NEXTFOLD;
998}
999
986LJFOLD(MIN MIN any) 1000LJFOLD(MIN MIN any)
987LJFOLD(MAX MAX any) 1001LJFOLD(MAX MAX any)
988LJFOLD(BAND BAND any) 1002LJFOLD(BAND BAND any)