diff options
author | Doug Evans <dje@canuck.cygnus.com> | 1997-10-18 19:48:25 +0000 |
---|---|---|
committer | Doug Evans <devans@gcc.gnu.org> | 1997-10-18 19:48:25 +0000 |
commit | 6bd35f867188095d5a51f49917f245995b5f97b3 (patch) | |
tree | ecb9f4886f6d1bb743b3ee3ce038014c86c0cdb6 /gcc | |
parent | 6981eacffd2d030c90b7c6ac3139c105bc404c43 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/expr.c | 17 |
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. @@ -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. |