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: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797