DUALNUM: Narrow unary minus.

This commit is contained in:
Mike Pall
2011-03-15 17:56:55 +01:00
parent a226fb4cc7
commit dcbae09b1d
4 changed files with 30 additions and 3 deletions

View File

@@ -701,7 +701,7 @@ LJFOLDF(shortcut_dropleft)
}
/* Note: no safe shortcuts with STRTO and TOSTR ("1e2" ==> +100 ==> "100"). */
LJFOLD(NEG NEG KNUM)
LJFOLD(NEG NEG any)
LJFOLD(BNOT BNOT)
LJFOLD(BSWAP BSWAP)
LJFOLDF(shortcut_leftleft)
@@ -1067,6 +1067,18 @@ LJFOLDF(simplify_intsub_k)
return RETRYFOLD;
}
LJFOLD(SUB KINT any)
LJFOLD(SUB KINT64 any)
LJFOLDF(simplify_intsub_kleft)
{
if (fleft->o == IR_KINT ? (fleft->i == 0) : (ir_kint64(fleft)->u64 == 0)) {
fins->o = IR_NEG; /* 0 - i ==> -i */
fins->op1 = fins->op2;
return RETRYFOLD;
}
return NEXTFOLD;
}
LJFOLD(ADD any KINT64)
LJFOLDF(simplify_intadd_k64)
{