diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 48ccc22fe09..998be31a421 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-10-24 Vladimir Makarov + + PR bootstrap/55068 + PR regression/55050 + * ira.c (setup_reg_renumber): Fix assert. + * ira-emit.c (emit_move_list): Update equivalences only for LRA. + 2012-10-24 Vladimir Makarov PR bootstrap/55067 diff --git a/gcc/ira-emit.c b/gcc/ira-emit.c index 683d47eba80..1e7f354102e 100644 --- a/gcc/ira-emit.c +++ b/gcc/ira-emit.c @@ -947,7 +947,8 @@ emit_move_list (move_t list, int freq) = gen_rtx_INSN_LIST (VOIDmode, insn, reg_equiv_init (regno)); } } - ira_update_equiv_info_by_shuffle_insn (to_regno, from_regno, list->insn); + if (ira_use_lra_p) + ira_update_equiv_info_by_shuffle_insn (to_regno, from_regno, list->insn); emit_insn (list->insn); mode = ALLOCNO_MODE (list->to); aclass = ALLOCNO_CLASS (list->to); diff --git a/gcc/ira.c b/gcc/ira.c index e91d37ddaa5..9a8b098cf48 100644 --- a/gcc/ira.c +++ b/gcc/ira.c @@ -1989,6 +1989,7 @@ setup_reg_renumber (void) ira_assert (!optimize || flag_caller_saves || (ALLOCNO_CALLS_CROSSED_NUM (a) == ALLOCNO_CHEAP_CALLS_CROSSED_NUM (a)) + || regno >= ira_reg_equiv_len || ira_equiv_no_lvalue_p (regno)); caller_save_needed = 1; }