libstdc++: Don't fail if math_errhandling is not defined

Older glibc does not define math_errhandling with -ffast-math, in which
case floating-point exceptions are not used.

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>

libstdc++-v3/ChangeLog:

	* include/experimental/bits/simd.h (__floating_point_flags): Do
	not rely on the presence of the math_errhandling macro.
This commit is contained in:
Matthias Kretz 2022-01-17 10:38:29 +01:00
parent 57cfcb3eb2
commit 84eb13b9d6
1 changed files with 10 additions and 1 deletions

View File

@ -283,11 +283,20 @@ constexpr inline bool __have_power_vmx = __have_power_vsx;
namespace __detail
{
constexpr bool __handle_fpexcept =
#ifdef math_errhandling
math_errhandling & MATH_ERREXCEPT;
#elif defined __FAST_MATH__
false;
#else
true;
#endif
constexpr std::uint_least64_t
__floating_point_flags()
{
std::uint_least64_t __flags = 0;
if constexpr (math_errhandling & MATH_ERREXCEPT)
if constexpr (__handle_fpexcept)
__flags |= 1;
#ifdef __FAST_MATH__
__flags |= 1 << 1;