R_MIPS_JALR failures
authorAlan Modra <amodra@gmail.com>
Wed, 16 Nov 2016 23:10:55 +0000 (09:40 +1030)
committerAlan Modra <amodra@gcc.gnu.org>
Wed, 16 Nov 2016 23:10:55 +0000 (09:40 +1030)
This is a fix for my PR70890 patch, which incorrectly removed all
REG_EQUIV notes rather than just one regarding a reg that dies.

PR rtl-optimization/78325
PR rtl-optimization/70890
* ira.c (combine_and_move_insns): Only remove REG_EQUIV notes
for dead regno.

From-SVN: r242525

gcc/ChangeLog
gcc/ira.c

index f6333d8f730a3241b3ea63cddc6163e7d796ddbc..5e5e55c96403552883f3f6ddc2842ff25fcf7625 100644 (file)
@@ -1,3 +1,10 @@
+2016-11-17  Alan Modra  <amodra@gmail.com>
+
+       PR rtl-optimization/78325
+       PR rtl-optimization/70890
+       * ira.c (combine_and_move_insns): Only remove REG_EQUIV notes
+       for dead regno.
+
 2016-11-16  Jason Merrill  <jason@redhat.com>
 
        * rtl.h: Declare gt_ggc_mx and gt_pch_nx.
index 315b8470b7f28690cf493d61b2f18fea085a2e77..d20ec99fae562930424023be93ac77bb376445ef 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -3747,7 +3747,7 @@ combine_and_move_insns (void)
             use_insn, when regno was seen as non-local.  Now that
             regno is local to this block, and dies, such an
             equivalence is invalid.  */
-         if (find_reg_note (use_insn, REG_EQUIV, NULL_RTX))
+         if (find_reg_note (use_insn, REG_EQUIV, regno_reg_rtx[regno]))
            {
              rtx set = single_set (use_insn);
              if (set && REG_P (SET_DEST (set)))