aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2006-04-18 08:23:39 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2006-04-18 08:23:39 +0000
commit6ee2e1587ab08fb846788debf4778dec63dcec53 (patch)
tree9cf5cf16274c44ee1026b11a9f22a35865c4e991
parente3949961fb3341f3c445a7ddd1537068440b268e (diff)
downloadgcc-6ee2e1587ab08fb846788debf4778dec63dcec53.zip
gcc-6ee2e1587ab08fb846788debf4778dec63dcec53.tar.gz
gcc-6ee2e1587ab08fb846788debf4778dec63dcec53.tar.bz2
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
-rw-r--r--gcc/ChangeLog13
-rw-r--r--gcc/regclass.c14
2 files changed, 17 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2d26302..8574f89 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,18 @@
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
* tree-ssa-math-opts.c (get_constant_one): New.
(insert_reciprocals): Use it.
diff --git a/gcc/regclass.c b/gcc/regclass.c
index 8a0bab1..7b2d5b1 100644
--- a/gcc/regclass.c
+++ b/gcc/regclass.c
@@ -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;