From: Julian Seward Date: Mon, 28 Aug 2006 18:04:33 +0000 (+0000) Subject: Stop mkU16 asserting if d32 is a negative 16-bit number (bug #132813). X-Git-Tag: svn/VALGRIND_3_3_1^2~100 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=59857ee550514dfd0b3c4c39c35c6728ae712e19;p=thirdparty%2Fvalgrind.git Stop mkU16 asserting if d32 is a negative 16-bit number (bug #132813). git-svn-id: svn://svn.valgrind.org/vex/trunk@1652 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index e349cd0cf5..8edb730d15 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -11728,6 +11728,10 @@ DisResult disInstr_X86_WRK ( t1 = newTemp(Ity_I32); t2 = newTemp(ty); assign( t1, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) ); putIReg(4, R_ESP, mkexpr(t1) ); + /* stop mkU16 asserting if d32 is a negative 16-bit number + (bug #132813) */ + if (ty == Ity_I16) + d32 &= 0xFFFF; storeLE( mkexpr(t1), mkU(ty,d32) ); DIP("push%c $0x%x\n", nameISize(sz), d32); break;