[PATCH] rs6000: Fix mangling for 128-bit float

Joseph Myers joseph@codesourcery.com
Fri Jun 1 21:34:00 GMT 2018


On Fri, 1 Jun 2018, Segher Boessenkool wrote:

> This patch changes the (C++) mangling of the 128-bit float types.
> IBM long double ("double-double") is mangled as "g", as before, and
> IEEE 128-bit long double is mangled as "u9__ieee128".

To be clear: given this mangling (which certainly simplifies the ABI), is 
the intent that only one type with double-double format, and only one type 
with binary128 format, will be accessible in any given C++ compilation, to 
avoid ICEs (bugs 85075 and 85518) from different types having the same 
mangling?  So __ibm128 *will* be the same type as long double when those 
have the same format, and likewise long double, __float128, __ieee128 and 
__typeof (__builtin_inff128 ()) will have the same type when they have the 
same format?

You can have the simple mangling that's compatible between different 
choices of long double, or you can have the types being consistently 
different so people can e.g. overload and write templates using them 
without worrying about the possibility that __ieee128 might or might not 
be the same type as long double depending on the compiler options, but you 
can't have both without running into problems.

-- 
Joseph S. Myers
joseph@codesourcery.com



More information about the Gcc-patches mailing list