Commit fb99ee9b by Bernd Schmidt Committed by Bernd Schmidt

ira.c (allocated_reg_info_size): New static variable.

	* ira.c (allocated_reg_info_size): New static variable.
	(expand_reg_info): Manage it. Call
	setup_preferred_alternate_classes_for_new_pseudos.
	(ira): Don't do it here.  Remove local allocated_reg_info_size,
	set the global before calling find_moveable_pseudos.
	(find_moveable_pseudos): Call expand_reg_info rather than
	resize_reg_info.

From-SVN: r187019
parent 48310492
2012-05-01 Bernd Schmidt <bernds@codesourcery.com>
* ira.c (allocated_reg_info_size): New static variable.
(expand_reg_info): Manage it. Call
setup_preferred_alternate_classes_for_new_pseudos.
(ira): Don't do it here. Remove local allocated_reg_info_size,
set the global before calling find_moveable_pseudos.
(find_moveable_pseudos): Call expand_reg_info rather than
resize_reg_info.
2012-05-01 Richard Henderson <rth@redhat.com> 2012-05-01 Richard Henderson <rth@redhat.com>
* common.opt (fsync-libcalls): New. * common.opt (fsync-libcalls): New.
......
...@@ -2238,18 +2238,22 @@ setup_preferred_alternate_classes_for_new_pseudos (int start) ...@@ -2238,18 +2238,22 @@ setup_preferred_alternate_classes_for_new_pseudos (int start)
} }
/* The number of entries allocated in teg_info. */
static int allocated_reg_info_size;
/* Regional allocation can create new pseudo-registers. This function /* Regional allocation can create new pseudo-registers. This function
expands some arrays for pseudo-registers. */ expands some arrays for pseudo-registers. */
static void static void
expand_reg_info (int old_size) expand_reg_info (void)
{ {
int i; int i;
int size = max_reg_num (); int size = max_reg_num ();
resize_reg_info (); resize_reg_info ();
for (i = old_size; i < size; i++) for (i = allocated_reg_info_size; i < size; i++)
setup_reg_classes (i, GENERAL_REGS, ALL_REGS, GENERAL_REGS); setup_reg_classes (i, GENERAL_REGS, ALL_REGS, GENERAL_REGS);
setup_preferred_alternate_classes_for_new_pseudos (allocated_reg_info_size);
allocated_reg_info_size = size;
} }
/* Return TRUE if there is too high register pressure in the function. /* Return TRUE if there is too high register pressure in the function.
...@@ -3984,7 +3988,7 @@ find_moveable_pseudos (void) ...@@ -3984,7 +3988,7 @@ find_moveable_pseudos (void)
last_moveable_pseudo = max_reg_num (); last_moveable_pseudo = max_reg_num ();
fix_reg_equiv_init (); fix_reg_equiv_init ();
resize_reg_info (); expand_reg_info ();
regstat_free_n_sets_and_refs (); regstat_free_n_sets_and_refs ();
regstat_free_ri (); regstat_free_ri ();
regstat_init_n_sets_and_refs (); regstat_init_n_sets_and_refs ();
...@@ -4044,7 +4048,6 @@ static int saved_flag_ira_share_spill_slots; ...@@ -4044,7 +4048,6 @@ static int saved_flag_ira_share_spill_slots;
static void static void
ira (FILE *f) ira (FILE *f)
{ {
int allocated_reg_info_size;
bool loops_p; bool loops_p;
int max_regno_before_ira, ira_max_point_before_emit; int max_regno_before_ira, ira_max_point_before_emit;
int rebuild_p; int rebuild_p;
...@@ -4121,9 +4124,10 @@ ira (FILE *f) ...@@ -4121,9 +4124,10 @@ ira (FILE *f)
} }
} }
allocated_reg_info_size = max_reg_num ();
find_moveable_pseudos (); find_moveable_pseudos ();
max_regno_before_ira = allocated_reg_info_size = max_reg_num (); max_regno_before_ira = max_reg_num ();
ira_setup_eliminable_regset (); ira_setup_eliminable_regset ();
ira_overall_cost = ira_reg_cost = ira_mem_cost = 0; ira_overall_cost = ira_reg_cost = ira_mem_cost = 0;
...@@ -4169,10 +4173,7 @@ ira (FILE *f) ...@@ -4169,10 +4173,7 @@ ira (FILE *f)
ira_initiate_assign (); ira_initiate_assign ();
else else
{ {
expand_reg_info (allocated_reg_info_size); expand_reg_info ();
setup_preferred_alternate_classes_for_new_pseudos
(allocated_reg_info_size);
allocated_reg_info_size = max_regno;
if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL) if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL)
fprintf (ira_dump_file, "Flattening IR\n"); fprintf (ira_dump_file, "Flattening IR\n");
......
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