On Wed, May 30, 2018 at 08:45:22AM -0500, Segher Boessenkool wrote: > > If you need to keep g for compatibility (you do), then why not just have > > e (long double is double) > > g (long double when matching __ibm128, or explicit __ibm128) > > u9__ieee128 (long double when matching __ieee128, or explicit __ieee128) > > "g" means __float128. Which is __ieee128. And it has to be, because > so much code expects that already, and it will only become more. But > "g" is demangled as __float128. Confusion galore.
Is that such a big deal? It hasn't been a problem in the past decade when it was similarly wrong too. And, with the intent to phase out long double as __ibm128 (at least on powerpc64le) shortly only libstdc++ and perhaps a couple of other libraries will have this demangling glitch (and those will have it in any case, because there will be the compatibility aliases that will demangle as __float128). So I really don't see any advantages of changing the __ibm128 and/or long double that is __ibm128 mangling from g to something else. But I see severe disadvantages. The libstdc++ changes to support both __ibm128 and __ieee128 will be very hard themselves, there is no need to complicate it further. Jakub