From: Julian Seward Date: Wed, 19 Dec 2012 15:28:43 +0000 (+0000) Subject: Constant folder: enable Sub32(x,0) ==> x. X-Git-Tag: svn/VALGRIND_3_9_0^2~187 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d46cf7eae24e0d039cdd299881009c7b7dde3974;p=thirdparty%2Fvalgrind.git Constant folder: enable Sub32(x,0) ==> x. git-svn-id: svn://svn.valgrind.org/vex/trunk@2598 --- diff --git a/VEX/priv/ir_opt.c b/VEX/priv/ir_opt.c index 1537df686f..7a879d484b 100644 --- a/VEX/priv/ir_opt.c +++ b/VEX/priv/ir_opt.c @@ -2063,13 +2063,14 @@ static IRExpr* fold_Expr ( IRExpr** env, IRExpr* e ) } break; + case Iop_Sub32: case Iop_Sub64: - /* Sub64(x,0) ==> x */ - if (isZeroU64(e->Iex.Binop.arg2)) { + /* Sub32/Sub64(x,0) ==> x */ + if (isZeroU(e->Iex.Binop.arg2)) { e2 = e->Iex.Binop.arg1; break; } - /* Sub64(t,t) ==> 0, for some IRTemp t */ + /* Sub32/Sub64(t,t) ==> 0, for some IRTemp t */ if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { e2 = mkZeroOfPrimopResultType(e->Iex.Binop.op); break; @@ -2133,9 +2134,8 @@ static IRExpr* fold_Expr ( IRExpr** env, IRExpr* e ) } break; - case Iop_Sub32: case Iop_CmpNE32: - /* Sub32/CmpNE32(t,t) ==> 0, for some IRTemp t */ + /* CmpNE32(t,t) ==> 0, for some IRTemp t */ if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { e2 = mkZeroOfPrimopResultType(e->Iex.Binop.op); break;