aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDoug Evans <dje@canuck.cygnus.com>1997-10-18 19:48:25 +0000
committerDoug Evans <devans@gcc.gnu.org>1997-10-18 19:48:25 +0000
commit6bd35f867188095d5a51f49917f245995b5f97b3 (patch)
treeecb9f4886f6d1bb743b3ee3ce038014c86c0cdb6 /gcc
parent6981eacffd2d030c90b7c6ac3139c105bc404c43 (diff)
downloadgcc-6bd35f867188095d5a51f49917f245995b5f97b3.zip
gcc-6bd35f867188095d5a51f49917f245995b5f97b3.tar.gz
gcc-6bd35f867188095d5a51f49917f245995b5f97b3.tar.bz2
* expr.c (use_group_regs): Don't call use_reg for MEMs.
From-SVN: r16046
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/expr.c17
2 files changed, 13 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d824c3a..2f848a6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/expr.c b/gcc/expr.c
index 1b5d509..91d682a 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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);
+ }
}
/* Generate several move instructions to clear LEN bytes of block TO.