diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/combine.c | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5ec82b6..1dbf312 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +1999-11-28 Jakub Jelinek <jakub@redhat.com> + + * combine.c (setup_incoming_promotions): Pass an outgoing + regno to FUNCTION_ARG_REGNO_P which it expects. + 1999-11-28 Andreas Jaeger <aj@suse.de> * mips/linux.h (CPP_PREDEFINES): Undefine before redefining. diff --git a/gcc/combine.c b/gcc/combine.c index d028a93..8f14d7d 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -768,8 +768,14 @@ setup_incoming_promotions () int unsignedp; rtx first = get_insns (); +#ifndef OUTGOING_REGNO +#define OUTGOING_REGNO(N) N +#endif for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) - if (FUNCTION_ARG_REGNO_P (regno) + /* Check whether this register can hold an incoming pointer + argument. FUNCTION_ARG_REGNO_P tests outgoing register + numbers, so translate if necessary due to register windows. */ + if (FUNCTION_ARG_REGNO_P (OUTGOING_REGNO (regno)) && (reg = promoted_input_arg (regno, &mode, &unsignedp)) != 0) { record_value_for_reg |