OSDN Git Service

* expr.c (use_group_regs): Don't call use_reg for MEMs.
authordevans <devans@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 18 Oct 1997 19:48:25 +0000 (19:48 +0000)
committerdevans <devans@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 18 Oct 1997 19:48:25 +0000 (19:48 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16046 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/expr.c

index d824c3a..2f848a6 100644 (file)
@@ -1,3 +1,7 @@
+Sat Oct 18 12:47:31 1997  Doug Evans  <dje@canuck.cygnus.com>
+
+       * expr.c (use_group_regs): Don't call use_reg for MEMs.
+
 Sat Oct 18 00:43:59 1997  Jeffrey A Law  (law@cygnus.com)
 
        * i386/freebsd.h (ASM_COMMENT_START): Fix.
index 1b5d509..91d682a 100644 (file)
@@ -1922,15 +1922,16 @@ use_group_regs (call_fusage, regs)
 {
   int i;
 
-  /* Check for a NULL entry, used to indicate that the parameter goes
-     both on the stack and in registers.  */
-  if (XEXP (XVECEXP (regs, 0, 0), 0))
-    i = 0;
-  else
-    i = 1;
+  for (i = 0; i < XVECLEN (regs, 0); i++)
+    {
+      rtx reg = XEXP (XVECEXP (regs, 0, i), 0);
 
-  for (; i < XVECLEN (regs, 0); i++)
-    use_reg (call_fusage, XEXP (XVECEXP (regs, 0, i), 0));
+      /* A NULL entry means the parameter goes both on the stack and in
+        registers.  This can also be a MEM for targets that pass values
+        partially on the stack and partially in registers.  */
+      if (reg && GET_CODE (reg) == REG)
+       use_reg (call_fusage, reg);
+    }
 }
 \f
 /* Generate several move instructions to clear LEN bytes of block TO.