From: Julian Seward Date: Wed, 13 Oct 2004 16:08:14 +0000 (+0000) Subject: fold_Expr: do Shl32(x,0) ==> x X-Git-Tag: svn/VALGRIND_3_0_1^2~1008 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c4e691648b835a4e4970172698864850a99d2d1;p=thirdparty%2Fvalgrind.git fold_Expr: do Shl32(x,0) ==> x git-svn-id: svn://svn.valgrind.org/vex/trunk@326 --- diff --git a/VEX/priv/ir/iropt.c b/VEX/priv/ir/iropt.c index 7903bd2d09..b352bf7e74 100644 --- a/VEX/priv/ir/iropt.c +++ b/VEX/priv/ir/iropt.c @@ -495,6 +495,13 @@ static IRExpr* fold_Expr ( IRExpr* e ) } else { /* other cases (identities, etc) */ + /* Shl32(x,0) ==> x */ + if (e->Iex.Binop.op == Iop_Shl32 + && e->Iex.Binop.arg2->tag == Iex_Const + && e->Iex.Binop.arg2->Iex.Const.con->Ico.U32 == 0) { + e2 = e->Iex.Binop.arg1; + } else + /* Add32(x,0) ==> x */ if (e->Iex.Binop.op == Iop_Add32 && e->Iex.Binop.arg2->tag == Iex_Const