re PR target/27117 (SH backend cheats to reload -- disables indexed addressing but uses it internally)

2006-04-18  Paolo Bonzini  <bonzini@gnu.org>

        PR target/27117

	Partial revert of revision 112637
	2006-04-03  Paolo Bonzini  <bonzini@gnu.org>
		    Dale Johannesen  <dalej@apple.com>

	PR target/19653
	* regclass.c (struct reg_pref): Update documentation.
	(regclass): Set prefclass to NO_REGS if memory is the best option.
	(record_reg_classes): Cope with a prefclass set to NO_REGS.

From-SVN: r113026
This commit is contained in:
Paolo Bonzini 2006-04-18 08:23:39 +00:00 committed by Paolo Bonzini
parent e3949961fb
commit 6ee2e1587a
2 changed files with 17 additions and 10 deletions

View File

@ -1,3 +1,16 @@
2006-04-18 Paolo Bonzini <bonzini@gnu.org>
PR target/27117
Partial revert of revision 112637
2006-04-03 Paolo Bonzini <bonzini@gnu.org>
Dale Johannesen <dalej@apple.com>
PR target/19653
* regclass.c (struct reg_pref): Update documentation.
(regclass): Set prefclass to NO_REGS if memory is the best option.
(record_reg_classes): Cope with a prefclass set to NO_REGS.
2006-04-18 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/26821

View File

@ -811,8 +811,7 @@ struct costs
/* Structure used to record preferences of given pseudo. */
struct reg_pref
{
/* (enum reg_class) prefclass is the preferred class. May be
NO_REGS if no class is better than memory. */
/* (enum reg_class) prefclass is the preferred class. */
char prefclass;
/* altclass is a register class that we should use for allocating
@ -1315,10 +1314,6 @@ regclass (rtx f, int nregs)
best = reg_class_subunion[(int) best][class];
}
/* If no register class is better than memory, use memory. */
if (p->mem_cost < best_cost)
best = NO_REGS;
/* Record the alternate register class; i.e., a class for which
every register in it is better than using memory. If adding a
class would make a smaller class (i.e., no union of just those
@ -1529,7 +1524,7 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
to what we would add if this register were not in the
appropriate class. */
if (reg_pref && reg_pref[REGNO (op)].prefclass != NO_REGS)
if (reg_pref)
alt_cost
+= (may_move_in_cost[mode]
[(unsigned char) reg_pref[REGNO (op)].prefclass]
@ -1755,7 +1750,7 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
to what we would add if this register were not in the
appropriate class. */
if (reg_pref && reg_pref[REGNO (op)].prefclass != NO_REGS)
if (reg_pref)
alt_cost
+= (may_move_in_cost[mode]
[(unsigned char) reg_pref[REGNO (op)].prefclass]
@ -1841,8 +1836,7 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
int class;
unsigned int nr;
if (regno >= FIRST_PSEUDO_REGISTER && reg_pref != 0
&& reg_pref[regno].prefclass != NO_REGS)
if (regno >= FIRST_PSEUDO_REGISTER && reg_pref != 0)
{
enum reg_class pref = reg_pref[regno].prefclass;