http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339
--- Comment #4 from Steven Bosscher <steven at gcc dot gnu.org> 2013-02-15
10:20:52 UTC ---
Perhaps for regmove IRA classes should be set up unconditionally:
Index: regmove.c
===================================================================
--- regmove.c (revision 196074)
+++ regmove.c (working copy)
@@ -1234,8 +1234,9 @@ regmove_optimize (void)
regstat_init_n_sets_and_refs ();
regstat_compute_ri ();
- if (flag_ira_loop_pressure)
- ira_set_pseudo_classes (true, dump_file);
+ /* Set up register classes for pseudos, so that reg_preferred_class
+ returns a more useful result. */
+ ira_set_pseudo_classes (true, dump_file);
regno_src_regno = XNEWVEC (int, nregs);
for (i = nregs; --i >= 0; )
@@ -1256,8 +1257,7 @@ regmove_optimize (void)
}
regstat_free_n_sets_and_refs ();
regstat_free_ri ();
- if (flag_ira_loop_pressure)
- free_reg_info ();
+ free_reg_info ();
return 0;
}