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 jos...@codesourcery.com