This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ia64 abi vs variable sized data types


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~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]