ACCUMULATE_OUTGOING_ARGS as runtime argument take 2
Mon Mar 27 14:25:00 GMT 2000
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).
! /* When we accumulate outgoing args, we must avoid any stack manipulations.
! Restore the stack pointer to original value now.
"to it's original value"
! ACCUMULATE_OUTGOING_ARGS target don't get here, but there are 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
+ 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)
! if (0)
+ if (1)
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.
More information about the Gcc-patches