expr.c (use_reg): Fix recording of USE information.
* expr.c (use_reg): Fix recording of USE information. (use_regs): Likewise. Delete argument `reg'. All callers changed. * expr.h (use_regs): Update prototype. * calls.c (expand_call): Update call to use_regs. Call use_reg if parm is wholly in registers. From-SVN: r7378
This commit is contained in:
parent
869c489d35
commit
0304dfbb67
@ -1844,8 +1844,11 @@ expand_call (exp, target, ignore)
|
||||
move_block_to_reg (REGNO (reg),
|
||||
validize_mem (args[i].value), nregs,
|
||||
args[i].mode);
|
||||
|
||||
use_regs (&call_fusage, reg, REGNO (reg), nregs);
|
||||
|
||||
if (nregs == -1)
|
||||
use_reg (&call_fusage, reg);
|
||||
else
|
||||
use_regs (&call_fusage, REGNO (reg), nregs == 0 ? 1 : nregs);
|
||||
|
||||
/* PARTIAL referred only to the first register, so clear it for the
|
||||
next time. */
|
||||
|
25
gcc/expr.c
25
gcc/expr.c
@ -1671,34 +1671,31 @@ void
|
||||
use_reg (call_fusage, reg)
|
||||
rtx *call_fusage, reg;
|
||||
{
|
||||
if (GET_CODE (reg) == REG
|
||||
&& REGNO (reg) >= FIRST_PSEUDO_REGISTER)
|
||||
if (GET_CODE (reg) != REG
|
||||
|| REGNO (reg) >= FIRST_PSEUDO_REGISTER)
|
||||
abort();
|
||||
|
||||
*call_fusage
|
||||
= gen_rtx (EXPR_LIST, VOIDmode,
|
||||
gen_rtx (USE, reg_raw_mode[REGNO (reg)], reg), *call_fusage);
|
||||
|
||||
gen_rtx (USE, VOIDmode, reg), *call_fusage);
|
||||
}
|
||||
|
||||
/* Mark NREGS consecutive regs, starting at REGNO, as holding parameters
|
||||
for the CALL_INSN. */
|
||||
|
||||
void
|
||||
use_regs (call_fusage, reg, regno, nregs)
|
||||
rtx *call_fusage, reg;
|
||||
use_regs (call_fusage, regno, nregs)
|
||||
rtx *call_fusage;
|
||||
int regno;
|
||||
int nregs;
|
||||
{
|
||||
if (nregs <= 1 && reg)
|
||||
use_reg (call_fusage, reg);
|
||||
else
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < nregs; i++)
|
||||
use_reg (call_fusage, gen_rtx (REG, word_mode, regno + i));
|
||||
}
|
||||
if (regno + nregs > FIRST_PSEUDO_REGISTER)
|
||||
abort ();
|
||||
|
||||
for (i = 0; i < nregs; i++)
|
||||
use_reg (call_fusage, gen_rtx (REG, reg_raw_mode[regno + i], regno + i));
|
||||
}
|
||||
|
||||
/* Write zeros through the storage of OBJECT.
|
||||
|
@ -600,7 +600,7 @@ extern void move_block_from_reg PROTO((int, rtx, int, int));
|
||||
extern void use_reg PROTO((rtx*, rtx));
|
||||
/* Mark NREGS consecutive regs, starting at REGNO, as holding parameters
|
||||
for the next CALL_INSN. */
|
||||
extern void use_regs PROTO((rtx*, rtx, int, int));
|
||||
extern void use_regs PROTO((rtx*, int, int));
|
||||
|
||||
/* Write zeros through the storage of OBJECT.
|
||||
If OBJECT has BLKmode, SIZE is its length in bytes. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user