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]

Re: ACCUMULATE_OUTGOING_ARGS and the i386



  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


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