Subject: Re: arm26 compiler fun
To: Ben Harris <bjh21@netbsd.org>
From: Richard Earnshaw <rearnsha@arm.com>
List: tech-toolchain
Date: 05/15/2000 09:45:42
> On Mon, 8 May 2000, Richard Earnshaw wrote:
> 
> >   /* NetBSD uses the old PCC style aggregate returning conventions. */
> >   #undef DEFAULT_PCC_STRUCT_RETURN
> >   #define DEFAULT_PCC_STRUCT_RETURN 1
> > 
> >   /* Although not normally relevant (since by default, all aggregates
> >      are returned in memory) compiling some parts of libc requires
> >      non-APCS style struct returns.  */
> >   #undef RETURN_IN_MEMORY
> > 
> > Get rid of both of these (backwards compatibility hacks).  There are some 
> > changes you will have to make to get the softfloat to compile (it makes 
> > some broken assumptions about structure returning), but it is better to be 
> > rid of this deviation from the standard compiler.
> 
> Removing those doesn't _seem_ to have stopped softfloat working.  I notice
> that its Makefile.inc forces it to be built with -freg-struct-return, so
> the compiler's default opinion on the matter may be moot.
> 

Are you sure?  Check doubles.  These are returned from soft-float as a 
struct containing two words.  Removing the above definitions will bring 
the compiler into line with the APCS and will make -freg-struct-return the 
default, but that mandates that such structures are returned in memory, 
not in a pair of registers as a double should be.

Unless someone has changed the soft-float code for this reason, I doubt 
this has been changed for any other reason.

R.