From: Adhemerval Zanella Date: Wed, 9 Mar 2022 18:36:53 +0000 (-0300) Subject: stdlib: Fix macro expansion producing 'defined' has undefined behavior X-Git-Tag: glibc-2.37~375 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c4ee1aba17f1e71b9ec856479260de9d362fdb6;p=thirdparty%2Fglibc.git stdlib: Fix macro expansion producing 'defined' has undefined behavior The FPIOCONST_HAVE_EXTENDED_RANGE is defined as: #define FPIOCONST_HAVE_EXTENDED_RANGE \ ((!defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024) \ || __HAVE_DISTINCT_FLOAT128) Which is undefined behavior accordingly to C Standard (Preprocessing directives, p4). Checked on x86_64-linux-gnu. --- diff --git a/stdlib/fpioconst.h b/stdlib/fpioconst.h index 1e019999413..3e185f57512 100644 --- a/stdlib/fpioconst.h +++ b/stdlib/fpioconst.h @@ -52,9 +52,12 @@ - LDBL_MIN_EXP + 2)). When _Float128 is enabled in libm and it is ABI-distinct from long double (e.g. on powerpc64le), we also need powers of 10 up to floor (log_2 (FLT128_MANT_DIG - FLT128_MIN_EXP + 2)). */ -#define FPIOCONST_HAVE_EXTENDED_RANGE \ - ((!defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024) \ - || __HAVE_DISTINCT_FLOAT128) +#if (!defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024) \ + || __HAVE_DISTINCT_FLOAT128 +# define FPIOCONST_HAVE_EXTENDED_RANGE 1 +#else +# define FPIOCONST_HAVE_EXTENDED_RANGE 0 +#endif #if FPIOCONST_HAVE_EXTENDED_RANGE # define FPIOCONST_POW10_ARRAY_SIZE 15