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).

Reply via email to