OSDN Git Service

* combine.c (setup_incoming_promotions): Pass an outgoing
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 28 Nov 1999 08:08:02 +0000 (08:08 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 28 Nov 1999 08:08:02 +0000 (08:08 +0000)
        regno to FUNCTION_ARG_REGNO_P which it expects.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30685 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/combine.c

index 5ec82b6..1dbf312 100644 (file)
@@ -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.
index d028a93..8f14d7d 100644 (file)
@@ -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