diff options
author | Mike Pall <mike> | 2011-03-15 17:56:55 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2011-03-15 18:14:18 +0100 |
commit | dcbae09b1d462cc4ed7c11b0ff10d5c1f74eebd7 (patch) | |
tree | 97b8f9253d30f2c6310de9bf804e32181ff75451 /src/lj_opt_fold.c | |
parent | a226fb4cc7758e7ccbe308b69eeca64c68438788 (diff) | |
download | luajit-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.c | 14 |
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"). */ |
704 | LJFOLD(NEG NEG KNUM) | 704 | LJFOLD(NEG NEG any) |
705 | LJFOLD(BNOT BNOT) | 705 | LJFOLD(BNOT BNOT) |
706 | LJFOLD(BSWAP BSWAP) | 706 | LJFOLD(BSWAP BSWAP) |
707 | LJFOLDF(shortcut_leftleft) | 707 | LJFOLDF(shortcut_leftleft) |
@@ -1067,6 +1067,18 @@ LJFOLDF(simplify_intsub_k) | |||
1067 | return RETRYFOLD; | 1067 | return RETRYFOLD; |
1068 | } | 1068 | } |
1069 | 1069 | ||
1070 | LJFOLD(SUB KINT any) | ||
1071 | LJFOLD(SUB KINT64 any) | ||
1072 | LJFOLDF(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 | |||
1070 | LJFOLD(ADD any KINT64) | 1082 | LJFOLD(ADD any KINT64) |
1071 | LJFOLDF(simplify_intadd_k64) | 1083 | LJFOLDF(simplify_intadd_k64) |
1072 | { | 1084 | { |