|
From: <sv...@va...> - 2006-08-28 18:54:22
|
Author: sewardj
Date: 2006-08-28 19:54:18 +0100 (Mon, 28 Aug 2006)
New Revision: 1653
Log:
64-bit counterpart to v1652 (Stop mkU16 asserting if d32 is a negative
16-bit number (bug #132813)).
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/priv/guest-amd64/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-amd64/toIR.c 2006-08-28 18:04:33 UTC (rev 1652)
+++ trunk/priv/guest-amd64/toIR.c 2006-08-28 18:54:18 UTC (rev 1653)
@@ -13134,6 +13134,10 @@
t2 =3D newTemp(ty);
assign( t1, binop(Iop_Sub64,getIReg64(R_RSP),mkU64(sz)) );
putIReg64(R_RSP, mkexpr(t1) );
+ /* stop mkU16 asserting if d32 is a negative 16-bit number
+ (bug #132813) */
+ if (ty =3D=3D Ity_I16)
+ d64 &=3D 0xFFFF;
storeLE( mkexpr(t1), mkU(ty,d64) );
DIP("push%c $%lld\n", nameISize(sz), (Long)d64);
break;
|