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


>   > 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. 

I think PARM_BOUNDARY will take care of this on most (all?) prospective
targets.

Note that PUSH_ROUNDING can be smaller than STACK_BOUNDARY; this is why
a number of optimizations are disabled when PUSH_ROUNDING is defined.
Just to get these optimizations we might want to make PUSH_ROUNDING
runtime-selectable.


It is also interesting to note that jump has some code enabled by
PUSH_ROUNDING that combines stack adjusts with following pushes.
It limits the number of pushes to be combined to a hard-coded number of
three.  For the x86, we probably don't want any limit unless we optimize
for space.


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