From: Jonathan Wakely Date: Tue, 23 Mar 2021 13:08:32 +0000 (+0000) Subject: libstdc++: Disable "ALT128" long double support for Clang X-Git-Tag: basepoints/gcc-12~467 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=baef0cffb58be7f5d9aeac6313ea9d8becc017b1;p=thirdparty%2Fgcc.git libstdc++: Disable "ALT128" long double support for Clang Clang does not currently support the __ibm128 type [1] and only supports the __ieee128 type in the unreleased 12.0.0 version [2]. That means it is not possible to provide support for -mabi=ieeelongdouble with Clang in an ABI compatible way (as we do for GCC by defining new facets and other types in the __gnu_cxx_ldbl128 namespace). By preventing the definition of _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT when compiling with Clang, all uses of __ibm128 and __ieee128 types will be disabled. This can be revisited in future when Clang supports the types (and provides a way to detect that support using the preprocessor). [1] https://reviews.llvm.org/D93377 [2] https://reviews.llvm.org/D97846 libstdc++-v3/ChangeLog: * include/bits/c++config (_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT): Do not define when compiling with Clang. --- diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index b57ff339990d..72ec91949de5 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -425,9 +425,12 @@ _GLIBCXX_END_NAMESPACE_VERSION // GLIBCXX_ABI Deprecated // Define if compatibility should be provided for -mlong-double-64. #undef _GLIBCXX_LONG_DOUBLE_COMPAT + // Define if compatibility should be provided for alternative 128-bit long -// double formats. +// double formats. Not possible for Clang until __ibm128 is supported. +#ifndef __clang__ #undef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT +#endif // Inline namespaces for long double 128 modes. #if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \