* lib/stdint.in.h (INT64_MAX, UINT64_MAX): Check via #ifdef rather than #if. * tests/test-floor2.c (main): Likewise. Reported by Peter O'Gorman.
Signed-off-by: Eric Blake <ebl...@redhat.com> --- > >> +#if UINT64_MAX >> # define GL_UINT64_T > > Any reason not to #ifdef INT64_MAX/UINT64_MAX instead of plain #if? With > just #if we get preprocessor errors on hpux10.20 with hp cc: Thanks for the report. When both forms work, #if is shorter than #ifdef, and proves that the argument is either undefined or numeric, which is why we prefer it. But since you have a proven case of a preprocessor bug where the workaround is easy enough to implement, we might as well go with the workaround and document why we did so. > cpp: "stdint.h", line 143: warning 2012: Unrepresentable preprocessor > number 9223372036854775807ll. I'm pushing this. ChangeLog | 6 ++++++ lib/stdint.in.h | 7 ++++--- tests/test-floor2.c | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 28d6819..b0ddade 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2010-12-24 Eric Blake <ebl...@redhat.com> + stdint: avoid HP-UX 10.20 preprocessor bug + * lib/stdint.in.h (INT64_MAX, UINT64_MAX): Check via #ifdef rather + than #if. + * tests/test-floor2.c (main): Likewise. + Reported by Peter O'Gorman. + pipe: make obsoletion transition easier * lib/pipe.h: Restore file as thin shim around "spawn-pipe.h". * modules/pipe (Files): Include revived file. diff --git a/lib/stdint.in.h b/lib/stdint.in.h index 70822b8..7270ad0 100644 --- a/lib/stdint.in.h +++ b/lib/stdint.in.h @@ -137,9 +137,10 @@ typedef unsigned int gl_uint32_t; /* If the system defines INT64_MAX, assume int64_t works. That way, if the underlying platform defines int64_t to be a 64-bit long long int, the code below won't mistakenly define it to be a 64-bit long - int, which would mess up C++ name mangling. */ + int, which would mess up C++ name mangling. We must use #ifdef + rather than #if, to avoid an error with HP-UX 10.20 cc. */ -#if INT64_MAX +#ifdef INT64_MAX # define GL_INT64_T #else /* Do not undefine int64_t if gnulib is not being used with 64-bit @@ -162,7 +163,7 @@ typedef long long int gl_int64_t; # endif #endif -#if UINT64_MAX +#ifdef UINT64_MAX # define GL_UINT64_T #else # if ULONG_MAX >> 31 >> 31 >> 1 == 1 diff --git a/tests/test-floor2.c b/tests/test-floor2.c index e239199..971f24a 100644 --- a/tests/test-floor2.c +++ b/tests/test-floor2.c @@ -144,7 +144,7 @@ check (double x) int main () { -#if UINT64_MAX +#ifdef UINT64_MAX unsigned int highbits; unsigned int lowbits; int error = 0; -- 1.7.3.4