On Thu, 14 Nov 2013, Alan Modra wrote:

> On Tue, Nov 12, 2013 at 10:33:46PM +0000, Joseph S. Myers wrote:
> > On Tue, 12 Nov 2013, Ulrich Weigand wrote:
> > > Well, we had been thinking about this, but right now it seems we're not
> > > going to be able to make that change throughout the ecosystem quickly
> > > enough, so for now, it'll probably have to remain the IBM long double.
> > 
> > What's the difficulty?  GCC is supposed to support IEEE binary128 long 
> > double already for Power, and IEEE binary128 works much better than IBM 
> > long double in glibc.  The time a new ABI is being introduced is the time 
> > to get things right rather than suggesting yet another ABI change in 
> > future.
> 
> The major difficulty is that we don't want to use the existing
> powerpc32 parameter passing and return scheme for ieee128 (ie. pass
> pointers to memory).  The thought was to pass ieee128 in vsx
> registers.  This means work in gcc, in glibc, in gdb, and likely other
> places, and as Uli has already said, we have time and resource
> constraints.

Thanks for the explanation.  Unfortunately it seems such constraints mean 
the IBM long double support in libgcc and glibc is also undermaintained 
compared to that for all IEEE floating-point formats as used by other 
architectures (see the large pile of glibc libm test failures resulting 
from libgcc bugs, or missing features such as fmal).

(Although in theory you could use long double the same as double until 
there's time to implement binary128 support, I wouldn't really recommend 
doing that.  It's very likely new symbols involving long double have been 
added to the glibc ABI since 2.4 without the required special handling for 
symbol versioning compatibility for architectures changing long double 
format, and doing another long double transition would require identifying 
all such symbols.)

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to