On Fri, Jun 15, 2018 at 04:00:42PM -0500, Segher Boessenkool wrote: > On Thu, Jun 14, 2018 at 08:15:51PM -0400, Michael Meissner wrote: > > On Thu, Jun 14, 2018 at 07:00:52PM -0500, Segher Boessenkool wrote: > > > Hi Mike, > > > > > > On Wed, Jun 13, 2018 at 05:16:37PM -0400, Michael Meissner wrote: > > > > This fixes some of the PowerPC tests that had implicit assumptions > > > > about the > > > > long double format. The fixes involved: > > > > > > > > 1) Using long double __complex instead of using a KC attribute; > > > > > > Why? Does KC not work? It should work. > > > > No KC does not work if long double is IEEE, just like IC does not work if > > long > > double is IBM extended double. This is part of the __float128/__ibm128 > > changes > > that eliminated using separate types all of the time. > > But those aren't types, those are modes. Why would the modes not work? > That makes no sense. Just like the __ieee128 and __ibm128 types work > always, so should the IF, KF, IC and KC modes. > > So what happens if you try to use KC?
The problem is the infrastructure of the compiler. The type and builtin system really, really does not like having the same external name for a library function. So if you have a type that uses KFmode and the function resolved to "__addkf3", and you have another type that uses TFmode, and it too resolves to "__addkf3" you get an internal error. Ditto for the name mangling. So we have to make sure that there are really only two modes being used. -- 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