From: | Christoph Berg <myon(at)debian(dot)org> |
---|---|
To: | Noah Misch <noah(at)leadboat(dot)com> |
Cc: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | powerpc pg_atomic_compare_exchange_u32_impl: error: comparison of integer expressions of different signedness (Re: pgsql: For all ppc compilers, implement compare_exchange and) fetch_add |
Date: | 2020-10-09 09:28:25 |
Message-ID: | 20201009092825.GD889580@msg.df7cb.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
Re: Noah Misch
> For all ppc compilers, implement compare_exchange and fetch_add with asm.
>
> This is more like how we handle s_lock.h and arch-x86.h.
>
> Reviewed by Tom Lane.
>
> Discussion: https://postgr.es/m/20191005173400.GA3979129@rfd.leadboat.com
Hi,
pg-cron on powerpc/ppc64/ppc64el is raising this warning inside the
ppc atomics:
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -g -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -std=c99 -Wall -Wextra -Werror -Wno-unknown-warning-option -Wno-unused-parameter -Wno-maybe-uninitialized -Wno-implicit-fallthrough -Iinclude -I/usr/include/postgresql -I. -I./ -I/usr/include/postgresql/13/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -c -o src/job_metadata.o src/job_metadata.c
In file included from /usr/include/postgresql/13/server/port/atomics.h:74,
from /usr/include/postgresql/13/server/utils/dsa.h:17,
from /usr/include/postgresql/13/server/nodes/tidbitmap.h:26,
from /usr/include/postgresql/13/server/access/genam.h:19,
from src/job_metadata.c:21:
/usr/include/postgresql/13/server/port/atomics/arch-ppc.h: In function ‘pg_atomic_compare_exchange_u32_impl’:
/usr/include/postgresql/13/server/port/atomics/arch-ppc.h:97:42: error: comparison of integer expressions of different signedness: ‘uint32’ {aka ‘unsigned int’} and ‘int’ [-Werror=sign-compare]
97 | *expected <= PG_INT16_MAX && *expected >= PG_INT16_MIN)
| ^~
src/job_metadata.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-unknown-warning-option’ may have been intended to silence earlier diagnostics
cc1: all warnings being treated as errors
Looking at the pg_atomic_compare_exchange_u32_impl, this looks like a
genuine problem:
static inline bool
pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
uint32 *expected, uint32 newval)
...
if (__builtin_constant_p(*expected) &&
*expected <= PG_INT16_MAX && *expected >= PG_INT16_MIN)
If *expected is an unsigned integer, comparing it to PG_INT16_MIN
which is a negative number doesn't make sense.
src/include/c.h:#define PG_INT16_MIN (-0x7FFF-1)
Christoph
From | Date | Subject | |
---|---|---|---|
Next Message | Noah Misch | 2020-10-09 10:01:17 | Re: powerpc pg_atomic_compare_exchange_u32_impl: error: comparison of integer expressions of different signedness (Re: pgsql: For all ppc compilers, implement compare_exchange and) fetch_add |
Previous Message | Amit Kapila | 2020-10-09 02:55:05 | pgsql: Fix typos in logical.c and reorderbuffer.c. |
From | Date | Subject | |
---|---|---|---|
Next Message | Dilip Kumar | 2020-10-09 09:31:48 | Re: [HACKERS] Custom compression methods |
Previous Message | Bharath Rupireddy | 2020-10-09 09:22:22 | Re: Parallel copy |