This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: ACCUMULATE_OUTGOING_ARGS and the i386
- To: Michael Meissner <meissner at cygnus dot com>
- Subject: Re: ACCUMULATE_OUTGOING_ARGS and the i386
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Wed, 21 Oct 1998 18:47:24 -0600
- cc: John Wehle <john at feith dot com>, jfc at mit dot edu, egcs at cygnus dot com
- Reply-To: law at cygnus dot com
In message <19981021165220.A4618@tiktok.cygnus.com>you write:
> On Tue, Oct 20, 1998 at 01:35:43PM -0400, John Wehle wrote:
> > The i386 port defines PUSH_ROUNDING and actually pushes a halfword
> > when it pushes a byte. What does ACCUMULATE_OUTGOING_ARGS do in
> > this situation? Is there a compatibility problem?
>
> Since ACCUMULATE_OUTGOING_ARGS never does a push, it doesn't matter (ie, the
> whole point of A_O_A is that it builds the stack frame once, and then does
> stores to copy the arguments instead of pushes).
True, but I don't think the code in calls.c & function.c is necessarily
safe if both are defined. ie, I believe (but have not checked very
carefully) that it does stuff like
[ ... generic code ... ]
#ifdef PUSH_ROUNDING
something PUSH_ROUNDING SPECIFIC
#endif
[ ... more generic code ... ]
In a few places.
We may need to make PUSH_ROUNDING work like A_O_A. More work, but not
terrible as far as I can tell.
jeff