From: Julian Seward Date: Tue, 27 Dec 2005 14:35:15 +0000 (+0000) Subject: Merge vx1501 (strict-aliasing fix) X-Git-Tag: svn/VALGRIND_3_1_1^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5ae7aeeaac14dae3d6c7951602c0d62d9ff2bc43;p=thirdparty%2Fvalgrind.git Merge vx1501 (strict-aliasing fix) git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_1_BRANCH@1516 --- diff --git a/VEX/priv/ir/irdefs.c b/VEX/priv/ir/irdefs.c index fe6c9a4ce4..5816f0f391 100644 --- a/VEX/priv/ir/irdefs.c +++ b/VEX/priv/ir/irdefs.c @@ -75,13 +75,16 @@ void ppIRType ( IRType ty ) void ppIRConst ( IRConst* con ) { + vassert(sizeof(ULong) == sizeof(Double)); + union { ULong i64; Double f64; } u; switch (con->tag) { case Ico_U1: vex_printf( "%d:I1", con->Ico.U1 ? 1 : 0); break; case Ico_U8: vex_printf( "0x%x:I8", (UInt)(con->Ico.U8)); break; 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 = 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;