Another workaround is needed on AIX, to fix these compilation errors: With gcc: ../../gltests/test-math.c:68:13: error: initializer element is not constant double hd = HUGE_VAL; ^~~~~~~~ ../../gltests/test-math.c:71:18: error: initializer element is not constant long double hl = HUGE_VALL; ^~~~~~~~~
With xlc: "../../gltests/test-math.c", line 68.13: 1506-221 (S) Initializer must be a valid constant expression. "../../gltests/test-math.c", line 71.18: 1506-221 (S) Initializer must be a valid constant expression. 2024-08-05 Bruno Haible <br...@clisp.org> math: Fix HUGE_VAL and HUGE_VALL on AIX. * lib/math.in.h (HUGE_VAL, HUGE_VALL): Override on AIX. * doc/posix-headers/math.texi: Mention this AIX problem. diff --git a/doc/posix-headers/math.texi b/doc/posix-headers/math.texi index 92b4d1b172..6f07b1e58c 100644 --- a/doc/posix-headers/math.texi +++ b/doc/posix-headers/math.texi @@ -45,7 +45,7 @@ @item @code{HUGE_VAL}, @code{HUGE_VALF}, @code{HUGE_VALL} are not compile time constants on some platforms: -FreeBSD 5.2. +FreeBSD 5.2, AIX 7.1. @item @code{INFINITY} and @code{NAN} are not compile time constants diff --git a/lib/math.in.h b/lib/math.in.h index 7730efb7f5..7b1302d883 100644 --- a/lib/math.in.h +++ b/lib/math.in.h @@ -223,7 +223,7 @@ _NaN () #endif /* HUGE_VAL is a 'double' Infinity. */ -#if !defined HUGE_VAL || (defined __FreeBSD__ && __FreeBSD__ < 6) +#if !defined HUGE_VAL || (defined __FreeBSD__ && __FreeBSD__ < 6) || defined _AIX # undef HUGE_VAL # if defined _MSC_VER /* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */ @@ -236,7 +236,7 @@ _NaN () #endif /* HUGE_VALL is a 'long double' Infinity. */ -#if !defined HUGE_VALL || (defined __FreeBSD__ && __FreeBSD__ < 6) +#if !defined HUGE_VALL || (defined __FreeBSD__ && __FreeBSD__ < 6) || defined _AIX # undef HUGE_VALL # if defined _MSC_VER /* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. */