Commit 992ca0f0 by Vladimir Makarov Committed by Vladimir Makarov

lra-assigns.c (assign_by_spills): Add non-reload pseudos assigned to hard…

lra-assigns.c (assign_by_spills): Add non-reload pseudos assigned to hard register to changed_pseudo_bitmap.

2012-10-25  Vladimir Makarov  <vmakarov@redhat.com>

	* lra-assigns.c (assign_by_spills): Add non-reload pseudos
	assigned to hard register to changed_pseudo_bitmap.

From-SVN: r192817
parent 479f4358
2012-10-25 Vladimir Makarov <vmakarov@redhat.com>
* lra-assigns.c (assign_by_spills): Add non-reload pseudos
assigned to hard register to changed_pseudo_bitmap.
2012-10-25 Ralf Corsépius <ralf.corsepius@rtems.org> 2012-10-25 Ralf Corsépius <ralf.corsepius@rtems.org>
* config.gcc (microblaze*-*-rtems*): New target. * config.gcc (microblaze*-*-rtems*): New target.
...@@ -1159,6 +1159,7 @@ assign_by_spills (void) ...@@ -1159,6 +1159,7 @@ assign_by_spills (void)
bitmap_head non_reload_pseudos; bitmap_head non_reload_pseudos;
unsigned int u; unsigned int u;
bitmap_iterator bi; bitmap_iterator bi;
bool reload_p;
int max_regno = max_reg_num (); int max_regno = max_reg_num ();
for (n = 0, i = lra_constraint_new_regno_start; i < max_regno; i++) for (n = 0, i = lra_constraint_new_regno_start; i < max_regno; i++)
...@@ -1193,12 +1194,12 @@ assign_by_spills (void) ...@@ -1193,12 +1194,12 @@ assign_by_spills (void)
lra_reg_info[regno].freq, regno_assign_info[regno].first, lra_reg_info[regno].freq, regno_assign_info[regno].first,
regno_assign_info[regno_assign_info[regno].first].freq); regno_assign_info[regno_assign_info[regno].first].freq);
hard_regno = find_hard_regno_for (regno, &cost, -1); hard_regno = find_hard_regno_for (regno, &cost, -1);
if (hard_regno < 0 reload_p = ! bitmap_bit_p (&non_reload_pseudos, regno);
&& ! bitmap_bit_p (&non_reload_pseudos, regno)) if (hard_regno < 0 && reload_p)
hard_regno = spill_for (regno, &all_spilled_pseudos); hard_regno = spill_for (regno, &all_spilled_pseudos);
if (hard_regno < 0) if (hard_regno < 0)
{ {
if (! bitmap_bit_p (&non_reload_pseudos, regno)) if (reload_p)
sorted_pseudos[nfails++] = regno; sorted_pseudos[nfails++] = regno;
} }
else else
...@@ -1207,6 +1208,11 @@ assign_by_spills (void) ...@@ -1207,6 +1208,11 @@ assign_by_spills (void)
pass. Indicate that it is no longer spilled. */ pass. Indicate that it is no longer spilled. */
bitmap_clear_bit (&all_spilled_pseudos, regno); bitmap_clear_bit (&all_spilled_pseudos, regno);
assign_hard_regno (hard_regno, regno); assign_hard_regno (hard_regno, regno);
if (! reload_p)
/* As non-reload pseudo assignment is changed we
should reconsider insns referring for the
pseudo. */
bitmap_set_bit (&changed_pseudo_bitmap, regno);
} }
} }
if (nfails == 0) if (nfails == 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment