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.