|
From: <sv...@va...> - 2007-04-29 10:28:33
|
Author: sewardj
Date: 2007-04-29 11:28:33 +0100 (Sun, 29 Apr 2007)
New Revision: 1756
Log:
Merge r1747 (Fold Add8(t,t) ==> t << 1. Fixes #143817 (Unused
bitfield pad bits confuse memcheck))
Modified:
branches/VEX_3_2_BRANCH/priv/ir/iropt.c
Modified: branches/VEX_3_2_BRANCH/priv/ir/iropt.c
===================================================================
--- branches/VEX_3_2_BRANCH/priv/ir/iropt.c 2007-04-29 10:20:05 UTC (rev 1755)
+++ branches/VEX_3_2_BRANCH/priv/ir/iropt.c 2007-04-29 10:28:33 UTC (rev 1756)
@@ -1431,6 +1431,18 @@
IRExpr_Const(IRConst_U8(1)));
} else
+ /* Add8(t,t) ==> t << 1; rationale as for Add32(t,t) above. */
+ if (e->Iex.Binop.op == Iop_Add8
+ && e->Iex.Binop.arg1->tag == Iex_Tmp
+ && e->Iex.Binop.arg2->tag == Iex_Tmp
+ && e->Iex.Binop.arg1->Iex.Tmp.tmp
+ == e->Iex.Binop.arg2->Iex.Tmp.tmp) {
+ e2 = IRExpr_Binop(Iop_Shl8,
+ e->Iex.Binop.arg1,
+ IRExpr_Const(IRConst_U8(1)));
+ } else
+ /* NB no Add16(t,t) case yet as no known test case exists */
+
/* Or64/Add64(x,0) ==> x */
if ((e->Iex.Binop.op == Iop_Add64 || e->Iex.Binop.op == Iop_Or64)
&& e->Iex.Binop.arg2->tag == Iex_Const
|