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