re PR rtl-optimization/55604 (ICE while dumping in remove_some_program_points_and_update_live_ranges)
PR rtl-optimization/55604 * lra-lives.c (lra_create_live_ranges): If there are no referenced pseudos left, do not compute live ranges. From-SVN: r194230
This commit is contained in:
parent
aeb9f7cf3c
commit
85f9ce675d
2 changed files with 24 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
|||
2012-12-05 Steven Bosscher <steven@gcc.gnu.org>
|
||||
|
||||
PR rtl-optimization/55604
|
||||
* lra-lives.c (lra_create_live_ranges): If there are no referenced
|
||||
pseudos left, do not compute live ranges.
|
||||
|
||||
2012-12-05 Steven Bosscher <steven@gcc.gnu.org>
|
||||
|
||||
* doc/tm.texi.in (TARGET_CLASS_LIKELY_SPILLED_P): Update documentation.
|
||||
|
|
|
@ -915,6 +915,7 @@ lra_create_live_ranges (bool all_p)
|
|||
basic_block bb;
|
||||
int i, hard_regno, max_regno = max_reg_num ();
|
||||
int curr_point;
|
||||
bool have_referenced_pseudos = false;
|
||||
|
||||
timevar_push (TV_LRA_CREATE_LIVE_RANGES);
|
||||
|
||||
|
@ -947,10 +948,24 @@ lra_create_live_ranges (bool all_p)
|
|||
lra_reg_info[i].call_p = false;
|
||||
#endif
|
||||
if (i >= FIRST_PSEUDO_REGISTER
|
||||
&& lra_reg_info[i].nrefs != 0 && (hard_regno = reg_renumber[i]) >= 0)
|
||||
lra_hard_reg_usage[hard_regno] += lra_reg_info[i].freq;
|
||||
&& lra_reg_info[i].nrefs != 0)
|
||||
{
|
||||
if ((hard_regno = reg_renumber[i]) >= 0)
|
||||
lra_hard_reg_usage[hard_regno] += lra_reg_info[i].freq;
|
||||
have_referenced_pseudos = true;
|
||||
}
|
||||
}
|
||||
lra_free_copies ();
|
||||
|
||||
/* Under some circumstances, we can have functions without pseudo
|
||||
registers. For such functions, lra_live_max_point will be 0,
|
||||
see e.g. PR55604, and there's nothing more to do for us here. */
|
||||
if (! have_referenced_pseudos)
|
||||
{
|
||||
timevar_pop (TV_LRA_CREATE_LIVE_RANGES);
|
||||
return;
|
||||
}
|
||||
|
||||
pseudos_live = sparseset_alloc (max_regno);
|
||||
pseudos_live_through_calls = sparseset_alloc (max_regno);
|
||||
pseudos_live_through_setjumps = sparseset_alloc (max_regno);
|
||||
|
@ -973,6 +988,7 @@ lra_create_live_ranges (bool all_p)
|
|||
}
|
||||
free (post_order_rev_cfg);
|
||||
lra_live_max_point = curr_point;
|
||||
gcc_checking_assert (lra_live_max_point > 0);
|
||||
if (lra_dump_file != NULL)
|
||||
print_live_ranges (lra_dump_file);
|
||||
/* Clean up. */
|
||||
|
|
Loading…
Add table
Reference in a new issue