This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: ACCUMULATE_OUTGOING_ARGS as runtime argument take 2
- To: Jan Hubicka <hubicka at atrey dot karlin dot mff dot cuni dot cz>
- Subject: Re: ACCUMULATE_OUTGOING_ARGS as runtime argument take 2
- From: Richard Henderson <rth at cygnus dot com>
- Date: Mon, 27 Mar 2000 14:25:02 -0800
- Cc: gcc-patches at gcc dot gnu dot org
- References: <20000327214811.A19771@atrey.karlin.mff.cuni.cz>
On Mon, Mar 27, 2000 at 09:48:11PM +0200, Jan Hubicka wrote:
> Here is updated version of my patch to turn ACCUMULATE_OUTGOING_ARGS
> to an runtime option. It now contains all necesarry changes to backends.
> It bootstraps on i386 in all three modes, passes regression tests
> and bootstraps on m68k (with some unreleated tweaking of current CVS tree).
Ok.
Some grammar:
! /* When we accumulate outgoing args, we must avoid any stack manipulations.
! Restore the stack pointer to original value now.
"to it's original value"
! Usually
! ACCUMULATE_OUTGOING_ARGS target don't get here, but there are exceptions,
"targets" "exceptions."
! such as i386, where ACCUMULATE_OUTGOING_ARGS can be enabled by demand and
! popping variants of functions exist as well.
"On i386 ACCUMULATE_OUTGOING_ARGS can be enabled on demand,"
! ??? We may do similar optimization as for defer_pop above, but it is
! probably not worthwhile.
"We may optimize similar to defer_pop"
+ /* For accumulate outgoing args mode we don't need to align, since frame
"the frame"
+ will be already aligned. Still align to STACK_BOUNDARY in order to avoid
+ backends from generating missaligned frame sizes. */
"Align to STACK_BOUNDARY in order to prevent"
! #ifndef STACK_GROWS_DOWNWARD
! #ifdef ARGS_GROW_DOWNWARD
! if (!ACCUMULATE_OUTGOING_ARGS)
#else
! if (0)
#endif
+ #else
+ if (1)
+ #endif
Ug. I realize this isn't much worse than the original, but can
we get this cleaned up next?
+ @kindex -maccumulate-outgoing-args
+ If enabled, the maximum amount of space required for outgoing arguments will
+ be computed and in the function prologue. This in faster code on most modern
+ CPUs because of reduced dependecies, improved scheduling and reduced stack
"computed in the function" "This is faster on"
+ when preferred stack boundary is not equal to 2. The drawback is notable
+ increase of code size. This switch implies -mno-push-args.
"is a notable increase in"
+ @findex PUSH_ARGS
+ @item PUSH_ARGS
+ A C expression. If nonzero, an push insns will be used to pass
+ outgoing arguments.
"nonzero, push"
r~