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; }