From: Doug Evans Date: Sat, 18 Oct 1997 19:48:25 +0000 (+0000) Subject: * expr.c (use_group_regs): Don't call use_reg for MEMs. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6bd35f867188095d5a51f49917f245995b5f97b3;p=gcc.git * expr.c (use_group_regs): Don't call use_reg for MEMs. From-SVN: r16046 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d824c3aeb55..2f848a65fca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Sat Oct 18 12:47:31 1997 Doug Evans + + * 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 1b5d5091c02..91d682a93fd 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.