mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
479f435805
commit
992ca0f069
|
|
@ -1,3 +1,8 @@
|
||||||
|
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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue