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
This commit is contained in:
Vladimir Makarov 2011-08-08 23:18:23 +00:00 committed by Vladimir Makarov
parent 8714c21f19
commit 4011806231
2 changed files with 11 additions and 20 deletions

View File

@ -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> 2011-08-08 Richard Henderson <rth@redhat.com>
PR middle-end/49990 PR middle-end/49990

View File

@ -1367,11 +1367,7 @@ print_allocno_costs (FILE *f)
for (k = 0; k < cost_classes_ptr->num; k++) for (k = 0; k < cost_classes_ptr->num; k++)
{ {
rclass = cost_classes[k]; rclass = cost_classes[k];
if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)] 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
)
{ {
fprintf (f, " %s:%d", reg_class_names[rclass], fprintf (f, " %s:%d", reg_class_names[rclass],
COSTS (costs, i)->cost[k]); COSTS (costs, i)->cost[k]);
@ -1409,11 +1405,7 @@ print_pseudo_costs (FILE *f)
for (k = 0; k < cost_classes_ptr->num; k++) for (k = 0; k < cost_classes_ptr->num; k++)
{ {
rclass = cost_classes[k]; rclass = cost_classes[k];
if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)] 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
)
fprintf (f, " %s:%d", reg_class_names[rclass], fprintf (f, " %s:%d", reg_class_names[rclass],
COSTS (costs, regno)->cost[k]); COSTS (costs, regno)->cost[k]);
} }
@ -1650,11 +1642,7 @@ find_costs_and_classes (FILE *dump_file)
rclass = cost_classes[k]; rclass = cost_classes[k];
/* Ignore classes that are too small or invalid for this /* Ignore classes that are too small or invalid for this
operand. */ operand. */
if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)] 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
)
continue; continue;
if (i_costs[k] < best_cost) if (i_costs[k] < best_cost)
{ {
@ -1725,11 +1713,7 @@ find_costs_and_classes (FILE *dump_file)
continue; continue;
/* Ignore classes that are too small or invalid /* Ignore classes that are too small or invalid
for this operand. */ for this operand. */
if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)] 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
)
; ;
else if (total_a_costs[k] < best_cost) else if (total_a_costs[k] < best_cost)
{ {