This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: ia64 abi vs variable sized data types
- From: Richard Henderson <rth at redhat dot com>
- To: Jim Wilson <wilson at redhat dot com>
- Cc: Cary Coutant <cary at cup dot hp dot com>, "Rao, Suresh K" <suresh dot k dot rao at intel dot com>, gcc at gcc dot gnu dot org
- Date: Mon, 1 Apr 2002 21:07:02 -0800
- Subject: Re: ia64 abi vs variable sized data types
- References: <20020401171310.A28260@redhat.com> <xwug02epx95.fsf@renascence.sfbay.redhat.com>
On Mon, Apr 01, 2002 at 07:58:30PM -0800, Jim Wilson wrote:
> There are some other targets that specify that structure arguments are
> passed in registers. The MIPS N64 ABI, and the sparc64 ABI come to mind.
> Do these ABIs specify how to handle variable sized aggregate arguments?
Not that I'm aware of.
> And if not, are they just as broken as the IA-64 port?
The Sparc64 ABI passes structures of size > 16 by reference.
Due to the way the backend hook was coded, we had an unsigned
comparison with -1, so variable sized structures get passed
by reference as well. Which again seems a reasonable default.
Alpha passes structures in registers, but due to gcc's default
MUST_PASS_IN_STACK implementation variable sized aggregates
are passed entirely on the stack. However, there we have a
complex va_list implementation which is able to skip the
argument registers.
Dunno about mips...
r~