From: Florian Krohm Date: Wed, 2 Sep 2015 15:46:05 +0000 (+0000) Subject: Fix undefined behaviours (left shifting a negative value) X-Git-Tag: svn/VALGRIND_3_11_0^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=50e3664124147e7df47d75ed775cdb6a94200a61;p=thirdparty%2Fvalgrind.git Fix undefined behaviours (left shifting a negative value) as pointed out by clang 3.7 git-svn-id: svn://svn.valgrind.org/vex/trunk@3182 --- diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c index 1943378dd5..1f28da6f53 100644 --- a/VEX/priv/guest_ppc_toIR.c +++ b/VEX/priv/guest_ppc_toIR.c @@ -1710,12 +1710,12 @@ static IRExpr* ea_rAor0_simm ( UInt rA, UInt simm16 ) static IRExpr* addr_align( IRExpr* addr, UChar align ) { IRType ty = mode64 ? Ity_I64 : Ity_I32; - Long mask; + ULong mask; switch (align) { case 1: return addr; // byte aligned - case 2: mask = ((Long)-1) << 1; break; // half-word aligned - case 4: mask = ((Long)-1) << 2; break; // word aligned - case 16: mask = ((Long)-1) << 4; break; // quad-word aligned + case 2: mask = ~0ULL << 1; break; // half-word aligned + case 4: mask = ~0ULL << 2; break; // word aligned + case 16: mask = ~0ULL << 4; break; // quad-word aligned default: vex_printf("addr_align: align = %u\n", align); vpanic("addr_align(ppc)");