ACCUMULATE_OUTGOING_ARGS and the i386
Jeffrey A Law
law@cygnus.com
Wed Oct 21 23:18:00 GMT 1998
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
More information about the Gcc
mailing list