On Tue, Oct 04, 2016 at 09:42:21PM +0000, Joseph Myers wrote:
> On Tue, 4 Oct 2016, Michael Meissner wrote:
>
> > It also changes __ibm128/__float128, and only registers the keywords if the
> > long double type is not IBM extended double or IEEE 128-bit floating point
> > respectively. If the long double type matches one of those types, instead
> > it
> > will issue a #define {__ibm128,__float128} long double, and the user will
> > always pick up the long double type.
>
> _Float128, when it exists, is always a distinct type from long double even
> if they are ABI-compatible. So if they are ABI-compatible, you would have
> __float128 the same as long double but different from _Float128, which
> seems confusing - are you doing it that way because of the lack of
> _Float128 in C++ means a simple define to _Float128 could only be used for
> C?
Right now, if -mfloat128 is used, __float128 and _Float128 use the same type.
If -mfloat128 is not used (but -mfloat128-type is), it creates a unique type.
At this point, I was mainly worrying about __ibm128 being the same as long
double. I am open to suggestions on what __float128 should be somewhere down
the road (gcc 8 or 9 time frame) when the switch becomes an option.
--
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: [email protected], phone: +1 (978) 899-4797