]> granicus.if.org Git - postgresql/commitdiff
Suppress -Wshift-negative-value warnings.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 17 Jun 2018 20:15:11 +0000 (16:15 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 17 Jun 2018 20:15:11 +0000 (16:15 -0400)
Clean up four places that result in compiler warnings when using recent
gcc with this warning class enabled (as seen on buildfarm members
calliphoridae, skink, and others).  In all these places, this is purely
cosmetic, because the shift distance could not be large enough to risk
a change of sign, so there's no chance of implementation-dependent
behavior.  Still, it's easy enough to avoid the warning by casting the
shifted value to unsigned, so let's do that.

Patch HEAD only, this isn't worth a back-patch.

src/backend/utils/adt/inet_cidr_ntop.c
src/backend/utils/adt/network.c
src/backend/utils/adt/varbit.c

index 5a30df16e5452b63370b0a0705c55a6d024b3efb..a4193e2ccec3074276a2ccd07b242fa7f7d951be 100644 (file)
@@ -202,7 +202,7 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
                b = bits % 8;
                if (b != 0)
                {
-                       m = ~0 << (8 - b);
+                       m = ((u_int) ~0) << (8 - b);
                        inbuf[p - 1] &= m;
                }
 
index 350b1a63d21df2676ea5f7f1fc2d066c11952ca5..5af7f4e0468eff8d86abf3b4cde85fcc2ac5de9b 100644 (file)
@@ -1486,7 +1486,7 @@ inetmi(PG_FUNCTION_ARGS)
                 * have to do proper sign extension.
                 */
                if (carry == 0 && byte < sizeof(int64))
-                       res |= ((int64) -1) << (byte * 8);
+                       res |= ((uint64) (int64) -1) << (byte * 8);
        }
 
        PG_RETURN_INT64(res);
index 6ba400b699c50235f296ce0533cf35ffc27a5b10..d8a58160f4151c19ff69e438f6319cbb3c14f24b 100644 (file)
@@ -1539,11 +1539,11 @@ bitfromint4(PG_FUNCTION_ARGS)
        /* store first fractional byte */
        if (destbitsleft > srcbitsleft)
        {
-               int                     val = (int) (a >> (destbitsleft - 8));
+               unsigned int val = (unsigned int) (a >> (destbitsleft - 8));
 
                /* Force sign-fill in case the compiler implements >> as zero-fill */
                if (a < 0)
-                       val |= (-1) << (srcbitsleft + 8 - destbitsleft);
+                       val |= ((unsigned int) -1) << (srcbitsleft + 8 - destbitsleft);
                *r++ = (bits8) (val & BITMASK);
                destbitsleft -= 8;
        }
@@ -1619,11 +1619,11 @@ bitfromint8(PG_FUNCTION_ARGS)
        /* store first fractional byte */
        if (destbitsleft > srcbitsleft)
        {
-               int                     val = (int) (a >> (destbitsleft - 8));
+               unsigned int val = (unsigned int) (a >> (destbitsleft - 8));
 
                /* Force sign-fill in case the compiler implements >> as zero-fill */
                if (a < 0)
-                       val |= (-1) << (srcbitsleft + 8 - destbitsleft);
+                       val |= ((unsigned int) -1) << (srcbitsleft + 8 - destbitsleft);
                *r++ = (bits8) (val & BITMASK);
                destbitsleft -= 8;
        }