|
From: <sv...@va...> - 2005-12-27 14:35:18
|
Author: sewardj
Date: 2005-12-27 14:35:15 +0000 (Tue, 27 Dec 2005)
New Revision: 1516
Log:
Merge vx1501 (strict-aliasing fix)
Modified:
branches/VEX_3_1_BRANCH/priv/ir/irdefs.c
Modified: branches/VEX_3_1_BRANCH/priv/ir/irdefs.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
--- branches/VEX_3_1_BRANCH/priv/ir/irdefs.c 2005-12-27 14:30:46 UTC (rev=
1515)
+++ branches/VEX_3_1_BRANCH/priv/ir/irdefs.c 2005-12-27 14:35:15 UTC (rev=
1516)
@@ -75,13 +75,16 @@
=20
void ppIRConst ( IRConst* con )
{
+ vassert(sizeof(ULong) =3D=3D sizeof(Double));
+ union { ULong i64; Double f64; } u;
switch (con->tag) {
case Ico_U1: vex_printf( "%d:I1", con->Ico.U1 ? 1 : 0); b=
reak;
case Ico_U8: vex_printf( "0x%x:I8", (UInt)(con->Ico.U8)); b=
reak;
case Ico_U16: vex_printf( "0x%x:I16", (UInt)(con->Ico.U16)); =
break;
case Ico_U32: vex_printf( "0x%x:I32", (UInt)(con->Ico.U32)); =
break;
case Ico_U64: vex_printf( "0x%llx:I64", (ULong)(con->Ico.U64));=
break;
- case Ico_F64: vex_printf( "F64{0x%llx}", *(ULong*)(&con->Ico.F64=
));
+ case Ico_F64: u.f64 =3D con->Ico.F64;
+ vex_printf( "F64{0x%llx}", u.i64);
break;
case Ico_F64i: vex_printf( "F64i{0x%llx}", con->Ico.F64i); break;
case Ico_V128: vex_printf( "V128{0x%04x}", (UInt)(con->Ico.V128));=
break;
|