diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2011-08-08 23:18:23 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2011-08-08 23:18:23 +0000 |
commit | 40118062317f00b285ed3db851cf49a13637f734 (patch) | |
tree | 9f8c350b51866e5a98b5e0904a418b2db1f7533f | |
parent | 8714c21f19912fbb55bc0e586756fe890b7f5baf (diff) | |
download | gcc-40118062317f00b285ed3db851cf49a13637f734.zip gcc-40118062317f00b285ed3db851cf49a13637f734.tar.gz gcc-40118062317f00b285ed3db851cf49a13637f734.tar.bz2 |
re PR middle-end/49990 (Regression: Bootstrap failure for x86_64-*-mingw32 in libfortran)
2011-08-08 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/49990
* ira-costs.c (print_allocno_costs, print_pseudo_costs): Don't
ignore classes which can not change mode.
(find_costs_and_classes): Ditto.
From-SVN: r177575
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ira-costs.c | 24 |
2 files changed, 11 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 58945f1..2b9fb29 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-08-08 Vladimir Makarov <vmakarov@redhat.com> + + PR rtl-optimization/49990 + * ira-costs.c (print_allocno_costs, print_pseudo_costs): Don't + ignore classes which can not change mode. + (find_costs_and_classes): Ditto. + 2011-08-08 Richard Henderson <rth@redhat.com> PR middle-end/49990 diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index 39ef33a..39cd432 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -1367,11 +1367,7 @@ print_allocno_costs (FILE *f) for (k = 0; k < cost_classes_ptr->num; k++) { rclass = cost_classes[k]; - if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)] -#ifdef CANNOT_CHANGE_MODE_CLASS - && ! invalid_mode_change_p (regno, (enum reg_class) rclass) -#endif - ) + if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)]) { fprintf (f, " %s:%d", reg_class_names[rclass], COSTS (costs, i)->cost[k]); @@ -1409,11 +1405,7 @@ print_pseudo_costs (FILE *f) for (k = 0; k < cost_classes_ptr->num; k++) { rclass = cost_classes[k]; - if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)] -#ifdef CANNOT_CHANGE_MODE_CLASS - && ! invalid_mode_change_p (regno, (enum reg_class) rclass) -#endif - ) + if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)]) fprintf (f, " %s:%d", reg_class_names[rclass], COSTS (costs, regno)->cost[k]); } @@ -1650,11 +1642,7 @@ find_costs_and_classes (FILE *dump_file) rclass = cost_classes[k]; /* Ignore classes that are too small or invalid for this operand. */ - if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)] -#ifdef CANNOT_CHANGE_MODE_CLASS - || invalid_mode_change_p (i, (enum reg_class) rclass) -#endif - ) + if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)]) continue; if (i_costs[k] < best_cost) { @@ -1725,11 +1713,7 @@ find_costs_and_classes (FILE *dump_file) continue; /* Ignore classes that are too small or invalid for this operand. */ - if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)] -#ifdef CANNOT_CHANGE_MODE_CLASS - || invalid_mode_change_p (i, (enum reg_class) rclass) -#endif - ) + if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)]) ; else if (total_a_costs[k] < best_cost) { |