]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix undefined behaviours (left shifting a negative value)
authorFlorian Krohm <florian@eich-krohm.de>
Wed, 2 Sep 2015 15:46:05 +0000 (15:46 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Wed, 2 Sep 2015 15:46:05 +0000 (15:46 +0000)
as pointed out by clang 3.7

git-svn-id: svn://svn.valgrind.org/vex/trunk@3182

VEX/priv/guest_ppc_toIR.c

index 1943378dd5476b1457b3591b0c6f44f26070430f..1f28da6f5387df56665fd0fb1586fa3939b640d3 100644 (file)
@@ -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)");