diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2018-06-17 16:15:11 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2018-06-17 16:15:11 -0400 |
commit | 9b53d966847c55fbd2bff63b3e1a1c37fc694071 (patch) | |
tree | 0347b58db1ab9598307ddf3c9e207ce1aa90514e /src | |
parent | 514d4a1338d5409431d644eaf453193ac362ef16 (diff) | |
download | postgresql-9b53d966847c55fbd2bff63b3e1a1c37fc694071.tar.gz postgresql-9b53d966847c55fbd2bff63b3e1a1c37fc694071.zip |
Suppress -Wshift-negative-value warnings.
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/inet_cidr_ntop.c | 2 | ||||
-rw-r--r-- | src/backend/utils/adt/network.c | 2 | ||||
-rw-r--r-- | src/backend/utils/adt/varbit.c | 8 |
3 files changed, 6 insertions, 6 deletions
diff --git a/src/backend/utils/adt/inet_cidr_ntop.c b/src/backend/utils/adt/inet_cidr_ntop.c index 5a30df16e54..a4193e2ccec 100644 --- a/src/backend/utils/adt/inet_cidr_ntop.c +++ b/src/backend/utils/adt/inet_cidr_ntop.c @@ -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; } diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c index 350b1a63d21..5af7f4e0468 100644 --- a/src/backend/utils/adt/network.c +++ b/src/backend/utils/adt/network.c @@ -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); diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c index 6ba400b699c..d8a58160f41 100644 --- a/src/backend/utils/adt/varbit.c +++ b/src/backend/utils/adt/varbit.c @@ -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; } |