summaryrefslogtreecommitdiff
path: root/src/lj_opt_fold.c
diff options
context:
space:
mode:
authorMike Pall <mike>2011-03-15 17:56:55 +0100
committerMike Pall <mike>2011-03-15 18:14:18 +0100
commitdcbae09b1d462cc4ed7c11b0ff10d5c1f74eebd7 (patch)
tree97b8f9253d30f2c6310de9bf804e32181ff75451 /src/lj_opt_fold.c
parenta226fb4cc7758e7ccbe308b69eeca64c68438788 (diff)
downloadluajit-dcbae09b1d462cc4ed7c11b0ff10d5c1f74eebd7.tar.gz
luajit-dcbae09b1d462cc4ed7c11b0ff10d5c1f74eebd7.tar.bz2
luajit-dcbae09b1d462cc4ed7c11b0ff10d5c1f74eebd7.zip
DUALNUM: Narrow unary minus.
Diffstat (limited to 'src/lj_opt_fold.c')
-rw-r--r--src/lj_opt_fold.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c
index 325b0372..edd376c9 100644
--- a/src/lj_opt_fold.c
+++ b/src/lj_opt_fold.c
@@ -701,7 +701,7 @@ LJFOLDF(shortcut_dropleft)
701} 701}
702 702
703/* Note: no safe shortcuts with STRTO and TOSTR ("1e2" ==> +100 ==> "100"). */ 703/* Note: no safe shortcuts with STRTO and TOSTR ("1e2" ==> +100 ==> "100"). */
704LJFOLD(NEG NEG KNUM) 704LJFOLD(NEG NEG any)
705LJFOLD(BNOT BNOT) 705LJFOLD(BNOT BNOT)
706LJFOLD(BSWAP BSWAP) 706LJFOLD(BSWAP BSWAP)
707LJFOLDF(shortcut_leftleft) 707LJFOLDF(shortcut_leftleft)
@@ -1067,6 +1067,18 @@ LJFOLDF(simplify_intsub_k)
1067 return RETRYFOLD; 1067 return RETRYFOLD;
1068} 1068}
1069 1069
1070LJFOLD(SUB KINT any)
1071LJFOLD(SUB KINT64 any)
1072LJFOLDF(simplify_intsub_kleft)
1073{
1074 if (fleft->o == IR_KINT ? (fleft->i == 0) : (ir_kint64(fleft)->u64 == 0)) {
1075 fins->o = IR_NEG; /* 0 - i ==> -i */
1076 fins->op1 = fins->op2;
1077 return RETRYFOLD;
1078 }
1079 return NEXTFOLD;
1080}
1081
1070LJFOLD(ADD any KINT64) 1082LJFOLD(ADD any KINT64)
1071LJFOLDF(simplify_intadd_k64) 1083LJFOLDF(simplify_intadd_k64)
1072{ 1084{