(reload): Add IN_ADDR to IN_ADDR_ADDR when computing needs since they conflict.

From-SVN: r14635
This commit is contained in:
Richard Kenner 1997-08-02 17:46:08 -04:00
parent 505923a0ad
commit b080c137d7
1 changed files with 10 additions and 10 deletions

View File

@ -1193,7 +1193,6 @@ reload (first, global, dumpfile)
new_basic_block_needs = 1;
}
mode = reload_inmode[i];
if (GET_MODE_SIZE (reload_outmode[i]) > GET_MODE_SIZE (mode))
mode = reload_outmode[i];
@ -1325,11 +1324,10 @@ reload (first, global, dumpfile)
for (in_max = 0, out_max = 0, k = 0;
k < reload_n_operands; k++)
{
in_max
= MAX (in_max, insn_needs.in_addr[k].regs[j][i]);
in_max
= MAX (in_max,
insn_needs.in_addr_addr[k].regs[j][i]);
(insn_needs.in_addr[k].regs[j][i]
+ insn_needs.in_addr_addr[k].regs[j][i]));
out_max
= MAX (out_max, insn_needs.out_addr[k].regs[j][i]);
out_max
@ -5437,12 +5435,14 @@ choose_reload_regs (insn, avoid_return_reg)
register int r = reload_order[j];
/* Ignore reloads that got marked inoperative. */
if (reload_out[r] == 0 && reload_in[r] == 0 && ! reload_secondary_p[r])
if (reload_out[r] == 0 && reload_in[r] == 0
&& ! reload_secondary_p[r])
continue;
/* If find_reloads chose a to use reload_in or reload_out as a reload
register, we don't need to chose one. Otherwise, try even if it found
one since we might save an insn if we find the value lying around. */
register, we don't need to chose one. Otherwise, try even if it
found one since we might save an insn if we find the value lying
around. */
if (reload_in[r] != 0 && reload_reg_rtx[r] != 0
&& (rtx_equal_p (reload_in[r], reload_reg_rtx[r])
|| rtx_equal_p (reload_out[r], reload_reg_rtx[r])))
@ -5474,9 +5474,9 @@ choose_reload_regs (insn, avoid_return_reg)
an object that is already in a register of the desired class.
This would avoid the need for the secondary reload register.
But this is complex because we can't easily determine what
objects might want to be loaded via this reload. So let a register
be allocated here. In `emit_reload_insns' we suppress one of the
loads in the case described above. */
objects might want to be loaded via this reload. So let a
register be allocated here. In `emit_reload_insns' we suppress
one of the loads in the case described above. */
if (inheritance)
{