(reload_reg_free_p, case RELOAD_OTHER): Allowed to conflict with

RELOAD_FOR_OTHER_ADDRESS.

From-SVN: r7505
This commit is contained in:
Richard Kenner 1994-06-16 18:54:00 -04:00
parent 787e63c8f3
commit 224f1d7123

View File

@ -4156,10 +4156,22 @@ reload_reg_free_p (regno, opnum, type)
switch (type)
{
case RELOAD_OTHER:
/* In use for anything means not available for a RELOAD_OTHER. */
return ! TEST_HARD_REG_BIT (reload_reg_used_at_all, regno);
/* In use for anything except RELOAD_FOR_OTHER_ADDRESS means
we can't use it for RELOAD_OTHER. */
if (TEST_HARD_REG_BIT (reload_reg_used, regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno))
return 0;
for (i = 0; i < reload_n_operands; i++)
if (TEST_HARD_REG_BIT (reload_reg_used_in_input_addr[i], regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_output_addr[i], regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_input[i], regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_output[i], regno))
return 0;
return 1;
/* The other kinds of use can sometimes share a register. */
case RELOAD_FOR_INPUT:
if (TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno))