From: Vladimir Makarov Date: Fri, 11 Jul 2014 17:19:53 +0000 (+0000) Subject: lra-constraints.c (remove_inheritance_pseudos): Process destination pseudo too. X-Git-Tag: releases/gcc-5.1.0~6393 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=12b308fa865bb6ac7f30671e332ec17926556da4;p=thirdparty%2Fgcc.git lra-constraints.c (remove_inheritance_pseudos): Process destination pseudo too. 2014-07-11 Vladimir Makarov * lra-constraints.c (remove_inheritance_pseudos): Process destination pseudo too. From-SVN: r212464 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 45b862bad6e0..c7f0fd47f9a8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-07-11 Vladimir Makarov + + * lra-constraints.c (remove_inheritance_pseudos): Process + destination pseudo too. + 2014-07-11 Rong Xu * gcov-tool.c (gcov_output_files): Fix build error introduced in diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index baed7e7d57c2..a43f8dc42088 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -5697,6 +5697,20 @@ remove_inheritance_pseudos (bitmap remove_pseudos) SUBREG_REG (SET_SRC (set)) = SET_SRC (prev_set); else SET_SRC (set) = SET_SRC (prev_set); + /* As we are finishing with processing the insn + here, check the destination too as it might + inheritance pseudo for another pseudo. */ + if (bitmap_bit_p (remove_pseudos, dregno) + && bitmap_bit_p (&lra_inheritance_pseudos, dregno) + && (restore_regno + = lra_reg_info[dregno].restore_regno) >= 0) + { + if (GET_CODE (SET_DEST (set)) == SUBREG) + SUBREG_REG (SET_DEST (set)) + = regno_reg_rtx[restore_regno]; + else + SET_DEST (set) = regno_reg_rtx[restore_regno]; + } lra_push_insn_and_update_insn_regno_info (curr_insn); lra_set_used_insn_alternative_by_uid (INSN_UID (curr_insn), -1);