https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109758
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
What does the committee have to do with the GCC implementation?
I guess what we could do is:
--- libstdc++-v3/include/bits/std_abs.h 2023-01-16 11:52:16.917721774 +0100
+++ libstdc++-v3/include/bits/std_abs.h 2023-05-07 12:01:03.716627026 +0200
@@ -135,7 +135,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__extension__ inline _GLIBCXX_CONSTEXPR
__float128
abs(__float128 __x)
- { return __x < 0 ? -__x : __x; }
+ {
+#if __has_builtin(__builtin_fabsf128)
+ return __builtin_fabsf128(__x);
+#else
+ return __x < 0 ? -__x : __x;
+#endif
+ }
#endif
_GLIBCXX_END_NAMESPACE_VERSION
If the builtin isn't supported, perhaps we could use bit_cast if supported to
toggle the sign bit if we know where it is, but if that isn't supported either,
there is nothing we can do, as the function needs to be constexpr.