+2022-04-13 Bruno Haible <bruno@clisp.org>
+
+ math: Fix errors in C++ mode on glibc systems with clang.
+ * lib/math.in.h (GNULIB_NAMESPACE_LACKS_ISFINITE,
+ GNULIB_NAMESPACE_LACKS_ISINF, GNULIB_NAMESPACE_LACKS_ISNAN,
+ GNULIB_NAMESPACE_LACKS_SIGNBIT): New macros.
+ * tests/test-math-c++.cc (isfinite): Skip test if
+ GNULIB_NAMESPACE_LACKS_ISFINITE is 1.
+ (isinf): Skip test if GNULIB_NAMESPACE_LACKS_ISINF is 1.
+ (isnan): Skip test if GNULIB_NAMESPACE_LACKS_ISNAN is 1.
+ (signbit): Skip test if GNULIB_NAMESPACE_LACKS_SIGNBIT is 1.
+
2022-04-08 Paul Eggert <eggert@cs.ucla.edu>
libgmp: pacify Clang too
functions. */
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite, rpl_isfinite, bool)
# define isfinite rpl_isfinite
+# define GNULIB_NAMESPACE_LACKS_ISFINITE 1
# else
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite, isfinite, bool)
# endif
functions. */
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf, rpl_isinf, bool)
# define isinf rpl_isinf
+# define GNULIB_NAMESPACE_LACKS_ISINF 1
# else
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf, isinf, bool)
# endif
functions. */
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, rpl_isnan, bool)
# define isnan rpl_isnan
+# define GNULIB_NAMESPACE_LACKS_ISNAN 1
# else
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, isnan, bool)
# endif
functions. */
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit, rpl_signbit, bool)
# define signbit rpl_signbit
+# define GNULIB_NAMESPACE_LACKS_SIGNBIT 1
# else
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit, signbit, bool)
# endif
# ifdef isfinite
# warning "isfinite should not be a macro in C++"
# endif
+# if !GNULIB_NAMESPACE_LACKS_ISFINITE
REAL_FLOATING_CHECK (isfinite, bool, (float), bool, (double), bool, (long double));
+# endif
#endif
#if GNULIB_TEST_ISINF
# ifdef isinf
# warning "isinf should not be a macro in C++"
# endif
+# if !GNULIB_NAMESPACE_LACKS_ISINF
REAL_FLOATING_CHECK (isinf, bool, (float), bool, (double), bool, (long double));
+# endif
#endif
#if GNULIB_TEST_ISNAN
# ifdef isnan
# warning "isnan should not be a macro in C++"
# endif
+# if !GNULIB_NAMESPACE_LACKS_ISNAN
REAL_FLOATING_CHECK (isnan, bool, (float), bool, (double), bool, (long double));
+# endif
#endif
#if GNULIB_TEST_SIGNBIT
# ifdef signbit
# warning "signbit should not be a macro in C++"
# endif
+# if !GNULIB_NAMESPACE_LACKS_SIGNBIT
REAL_FLOATING_CHECK (signbit, bool, (float), bool, (double), bool, (long double));
+# endif
#endif