Don't use CLASS_LIKELY_SPILLED in local-alloc

From-SVN: r36197
This commit is contained in:
Bernd Schmidt 2000-09-06 09:46:58 +00:00 committed by Bernd Schmidt
parent 299d838af8
commit 611bbf2af7
2 changed files with 7 additions and 22 deletions

View file

@ -1,5 +1,9 @@
2000-09-06 Bernd Schmidt <bernds@redhat.co.uk>
* local-alloc.c (local_alloc): Ignore CLASS_LIKELY_SPILLED.
(update_equiv_regs): Likewise, except for the mn10200 kludge.
(combine_regs): Likewise.
* Makefile.in (cse.o): Depend on $(BASIC_BLOCK_H).
* cse.c: Include "basic-block.h".
(struct table_elt): New field REGCOST.

View file

@ -349,19 +349,14 @@ local_alloc ()
/* Determine which pseudo-registers can be allocated by local-alloc.
In general, these are the registers used only in a single block and
which only die once. However, if a register's preferred class has only
a few entries, don't allocate this register here unless it is preferred
or nothing since retry_global_alloc won't be able to move it to
GENERAL_REGS if a reload register of this class is needed.
which only die once.
We need not be concerned with which block actually uses the register
since we will never see it outside that block. */
for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
{
if (REG_BASIC_BLOCK (i) >= 0 && REG_N_DEATHS (i) == 1
&& (reg_alternate_class (i) == NO_REGS
|| ! CLASS_LIKELY_SPILLED_P (reg_preferred_class (i))))
if (REG_BASIC_BLOCK (i) >= 0 && REG_N_DEATHS (i) == 1)
reg_qty[i] = -2;
else
reg_qty[i] = -1;
@ -789,15 +784,6 @@ update_equiv_regs ()
note_stores (set, no_equiv, NULL);
continue;
}
/* Don't handle the equivalence if the source is in a register
class that's likely to be spilled. */
if (GET_CODE (src) == REG
&& REGNO (src) >= FIRST_PSEUDO_REGISTER
&& CLASS_LIKELY_SPILLED_P (reg_preferred_class (REGNO (src))))
{
no_equiv (dest, set, NULL);
continue;
}
note = find_reg_note (insn, REG_EQUAL, NULL_RTX);
@ -1653,11 +1639,6 @@ combine_regs (usedreg, setreg, may_save_copy, insn_number, insn, already_dead)
|| ureg == sreg
/* Don't try to connect two different hardware registers. */
|| (ureg < FIRST_PSEUDO_REGISTER && sreg < FIRST_PSEUDO_REGISTER)
/* Don't use a hard reg that might be spilled. */
|| (ureg < FIRST_PSEUDO_REGISTER
&& CLASS_LIKELY_SPILLED_P (REGNO_REG_CLASS (ureg)))
|| (sreg < FIRST_PSEUDO_REGISTER
&& CLASS_LIKELY_SPILLED_P (REGNO_REG_CLASS (sreg)))
/* Don't connect two different machine modes if they have different
implications as to which registers may be used. */
|| !MODES_TIEABLE_P (GET_MODE (usedreg), GET_MODE (setreg)))