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: John Wehle <john at feith dot com>
- Subject: Re: ACCUMULATE_OUTGOING_ARGS and the i386
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Thu, 22 Oct 1998 15:50:11 -0600
- cc: meissner at cygnus dot com, jfc at mit dot edu, egcs at cygnus dot com
- Reply-To: law at cygnus dot com
In message <199810212227.SAA06575@jwlab.FEITH.COM>you write:
> Ultimately ACCUMULATE_OUTGOING_ARGS needs to build a stack frame
> for a call which is compatible with what the called function expects.
Right.
> It appears that PUSH_ROUNDING affects the stack layout. How is
> ACCUMULATE_OUTGOING_ARGS guaranteed to create the same stack layout
> on a platform which previously didn't use ACCUMULATE_OUTGOING_ARGS
> and defined PUSH_ROUNDING if ACCUMULATE_OUTGOING_ARGS doesn't use
> information provided by PUSH_ROUNDING?
That's a good question.
> For example ... if the platform's calling convention requires two bytes
> to be allocated in the stack when only one byte is being passed what
> happens when using ACCUMULATE_OUTGOING_ARGS? This is handled when
> not using ACCUMULATE_OUTGOING_ARGS by correctly defining PUSH_ROUNDING
> and the push patterns.
PUSH_ROUNDING is generall to deal with architectures that have a push
byte instruction which actually pushes a 16bit word and similar cases.
I guess the first thing to do is try and trigger a case where PUSH_ROUNDING
does something to the stack frame. Probably by playing with trying to
pass byte sized args to prototyped functions.
One we know exactly when and how PUSH_ROUNDING effects argument layout we'll
be able to determine what (if anything) needs to be done to A_O_A.
jeff