1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00

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.
This commit is contained in:
Adhemerval Zanella
2022-03-09 15:36:53 -03:00
parent e57d8fc97b
commit 6c4ee1aba1

View File

@@ -52,9 +52,12 @@
- LDBL_MIN_EXP + 2)). When _Float128 is enabled in libm and it is - 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 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)). */ of 10 up to floor (log_2 (FLT128_MANT_DIG - FLT128_MIN_EXP + 2)). */
#define FPIOCONST_HAVE_EXTENDED_RANGE \ #if (!defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024) \
((!defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024) \ || __HAVE_DISTINCT_FLOAT128
|| __HAVE_DISTINCT_FLOAT128) # define FPIOCONST_HAVE_EXTENDED_RANGE 1
#else
# define FPIOCONST_HAVE_EXTENDED_RANGE 0
#endif
#if FPIOCONST_HAVE_EXTENDED_RANGE #if FPIOCONST_HAVE_EXTENDED_RANGE
# define FPIOCONST_POW10_ARRAY_SIZE 15 # define FPIOCONST_POW10_ARRAY_SIZE 15