ACCUMULATE_OUTGOING_ARGS as runtime argument take 2

Richard Henderson rth@cygnus.com
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).

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~


More information about the Gcc-patches mailing list