diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/calls.c | 20 | ||||
-rw-r--r-- | gcc/defaults.h | 20 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 7 |
4 files changed, 32 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1f2777f..9b559e5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-06-30 Jason Merrill <jason@redhat.com> + + * defaults.h (PUSH_ARGS_REVERSED): Define default here. + * calls.c: Not here. + 2003-06-30 Ben Elliston <bje@wasabisystems.com> * config/arm/arm.c (arm_rtx_costs): Remove #if 0 block. diff --git a/gcc/calls.c b/gcc/calls.c index f220a6d..c15cb55 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -40,26 +40,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "cgraph.h" #include "except.h" -/* Decide whether a function's arguments should be processed - from first to last or from last to first. - - They should if the stack and args grow in opposite directions, but - only if we have push insns. */ - -#ifdef PUSH_ROUNDING - -#ifndef PUSH_ARGS_REVERSED -#if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD) -#define PUSH_ARGS_REVERSED PUSH_ARGS -#endif -#endif - -#endif - -#ifndef PUSH_ARGS_REVERSED -#define PUSH_ARGS_REVERSED 0 -#endif - #ifndef STACK_POINTER_OFFSET #define STACK_POINTER_OFFSET 0 #endif diff --git a/gcc/defaults.h b/gcc/defaults.h index eb3e78c..20dc172 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -411,6 +411,26 @@ do { fputs (integer_asm_op (POINTER_SIZE / UNITS_PER_WORD, TRUE), FILE); \ #endif #endif +/* Decide whether a function's arguments should be processed + from first to last or from last to first. + + They should if the stack and args grow in opposite directions, but + only if we have push insns. */ + +#ifdef PUSH_ROUNDING + +#ifndef PUSH_ARGS_REVERSED +#if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD) +#define PUSH_ARGS_REVERSED PUSH_ARGS +#endif +#endif + +#endif + +#ifndef PUSH_ARGS_REVERSED +#define PUSH_ARGS_REVERSED 0 +#endif + /* If PREFERRED_STACK_BOUNDARY is not defined, set it to STACK_BOUNDARY. STACK_BOUNDARY is required. */ #ifndef PREFERRED_STACK_BOUNDARY diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 1f52fcb..cbc40ff 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -3374,6 +3374,13 @@ allocate the entire argument block and then store the arguments into it. When @code{PUSH_ARGS} is nonzero, @code{PUSH_ROUNDING} must be defined too. @end defmac +@defmac PUSH_ARGS_REVERSED +A C expression. If nonzero, function arguments will be evaluated from +last to first, rather than from first to last. If this macro is not +defined, it defaults to @code{PUSH_ARGS} on targets where the stack +and args grow in opposite directions, and 0 otherwise. +@end defmac + @defmac PUSH_ROUNDING (@var{npushed}) A C expression that is the number of bytes actually pushed onto the stack when an instruction attempts to push @var{npushed} bytes. |