https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120304
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Rainer Orth from comment #0) > * I initially tried aliasing __float128 to _Float128, but that broke the > libstdc++ build: Libstdc++ could be changed to handle it, but I don't think we want that. In C++ the _FloatN types have special rules that prevent some implicit conversions, which would break existing code that uses __float128 and expects it to have the usual implicit conversions e.g. to double. > > In file included from > /vol/gcc/src/git/gcc-iains/libstdc++-v3/include/precompiled/stdc++.h:57: > /var/gcc/cobol/11.4-gcc-64/sparcv9-sun-solaris2.11/libstdc++-v3/include/ > limits:2096:12: error: redefinition of ‘struct > std::numeric_limits<_Float128>’ > 2096 | struct numeric_limits<__float128> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~ > > So I went for aliasing long double instead, just like HP-UX/ia64. And powerpc64le when using -mabi=ieeelongdouble, for which long double, __float128 and __ieee128 are the same type (and with -mabi=ibmlongdouble only __float128 and __ieee128 are the same type).