aboutsummaryrefslogtreecommitdiff
path: root/src/port/pg_bitutils.c
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2024-12-04 14:46:59 +1300
committerThomas Munro <tmunro@postgresql.org>2024-12-04 15:05:38 +1300
commit962da900ac8f0927f1af2fd811ca67fa163c873a (patch)
tree5839c22d2ad7bc68ddfd1e4debc734ef5df3a9d1 /src/port/pg_bitutils.c
parent3b08d5224d7df71cc111d8522cf6190fc02f6fb9 (diff)
downloadpostgresql-962da900ac8f0927f1af2fd811ca67fa163c873a.tar.gz
postgresql-962da900ac8f0927f1af2fd811ca67fa163c873a.zip
Use <stdint.h> and <inttypes.h> for c.h integers.
Redefine our exact width types with standard C99 types and macros, including int64_t, INT64_MAX, INT64_C(), PRId64 etc. We were already using <stdint.h> types in a few places. One complication is that Windows' <inttypes.h> uses format strings like "%I64d", "%I32", "%I" for PRI*64, PRI*32, PTR*PTR, instead of mapping to other standardized format strings like "%lld" etc as seen on other known systems. Teach our snprintf.c to understand them. This removes a lot of configure clutter, and should also allow 64-bit numbers and other standard types to be used in localized messages without casting. Reviewed-by: Peter Eisentraut <peter@eisentraut.org> Discussion: https://postgr.es/m/ME3P282MB3166F9D1F71F787929C0C7E7B6312%40ME3P282MB3166.AUSP282.PROD.OUTLOOK.COM
Diffstat (limited to 'src/port/pg_bitutils.c')
-rw-r--r--src/port/pg_bitutils.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/port/pg_bitutils.c b/src/port/pg_bitutils.c
index 87f56e82b80..c8399981ee0 100644
--- a/src/port/pg_bitutils.c
+++ b/src/port/pg_bitutils.c
@@ -370,12 +370,12 @@ static inline int
pg_popcount64_slow(uint64 word)
{
#ifdef HAVE__BUILTIN_POPCOUNT
-#if defined(HAVE_LONG_INT_64)
+#if SIZEOF_LONG == 8
return __builtin_popcountl(word);
-#elif defined(HAVE_LONG_LONG_INT_64)
+#elif SIZEOF_LONG_LONG == 8
return __builtin_popcountll(word);
#else
-#error must have a working 64-bit integer datatype
+#error "cannot find integer of the same size as uint64_t"
#endif
#else /* !HAVE__BUILTIN_POPCOUNT */
int result = 0;