From: Bernd Schmidt Date: Wed, 6 Sep 2000 09:46:58 +0000 (+0000) Subject: Don't use CLASS_LIKELY_SPILLED in local-alloc X-Git-Tag: prereleases/libstdc++-2.92~4225 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=611bbf2af74de88302605b10cf935670089f0f1f;p=thirdparty%2Fgcc.git Don't use CLASS_LIKELY_SPILLED in local-alloc From-SVN: r36197 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 10e9bb519406..cad528428496 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2000-09-06 Bernd Schmidt - + + * 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. diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 7e57c82951e6..666faca1705e 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -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)))