One issue with doing the transition is what mangling should be used with the
new long double.

At the moment, the current mangling is:
        long double     "g"
        __float128      "u9__ieee128"
        __ibm128        "g"

Obviously this will have to change in the future.  It is unfortunate that we
choose "g" to mean IBM extended double many many years ago, when it should have
been used for IEEE 128-bit floating point.  But that is long ago, so I think we
need to keep it.

But assuming we want compatibility with libraries like glibc and libstdc++, I
think we will have to continue to use "g" for __ibm128.

With the long double change, I tend to view this as an ABI change.  But if the
user doesn't use long double, they should be able to link without changes.

I would propose using a new mangling for IEEE 128-bit long double.  I would
prefer to get agreement on what the new mangling should be so we don't have an
issue like we had in GCC 8.1 going to GCC 8.2, where we changed the mangling,
and had to provide aliases for the old name.

At the moment I think the mangling should be:
        long double     "g"                     if long double is IBM
        long double     "u12_ieee128_ld"        if long double is IEEE
        __float128      "u9__ieee128"
        __ibm128        "g"

If we decide to change the __ibm128 mangling (or the long double when long
double is IBM), then we will likely need to generate aliases to bridge the old
vs. new support.

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meiss...@linux.ibm.com, phone: +1 (978) 899-4797

Reply via email to