]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
stdlib: Fix macro expansion producing 'defined' has undefined behavior
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 9 Mar 2022 18:36:53 +0000 (15:36 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 30 Aug 2022 11:40:47 +0000 (08:40 -0300)
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

index 1e01999941392c5b66c46ca5179a22737f6a2bd9..3e185f57512348840020035905ca6f5a6c2f694a 100644 (file)
    - 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