From 6c4ee1aba17f1e71b9ec856479260de9d362fdb6 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Wed, 9 Mar 2022 15:36:53 -0300 Subject: 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. --- stdlib/fpioconst.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'stdlib') diff --git a/stdlib/fpioconst.h b/stdlib/fpioconst.h index 1e01999941..3e185f5751 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 -- cgit 1.4.1