re PR rtl-optimization/88308 (ICE in maybe_record_trace_start, at dwarf2cfi.c:2309)
authorAaron Sawdey <acsawdey@linux.ibm.com>
Fri, 15 Feb 2019 15:41:25 +0000 (15:41 +0000)
committerAaron Sawdey <acsawdey@gcc.gnu.org>
Fri, 15 Feb 2019 15:41:25 +0000 (09:41 -0600)
2019-02-15  Aaron Sawdey  <acsawdey@linux.ibm.com>

PR rtl-optimization/88308
* shrink-wrap.c (move_insn_for_shrink_wrap): Fix LABEL_NUSES counts
on copied instruction.

From-SVN: r268942

gcc/ChangeLog
gcc/shrink-wrap.c

index 9d13011..7d728c0 100644 (file)
@@ -1,3 +1,9 @@
+2019-02-15  Aaron Sawdey  <acsawdey@linux.ibm.com>
+
+       PR rtl-optimization/88308
+       * shrink-wrap.c (move_insn_for_shrink_wrap): Fix LABEL_NUSES counts
+       on copied instruction.
+
 2019-02-15  Eric Botcazou  <ebotcazou@adacore.com>
 
        * final.c (insn_current_reference_address): Replace test on JUMP_P
index e0f55ee..57124db 100644 (file)
@@ -414,7 +414,12 @@ move_insn_for_shrink_wrap (basic_block bb, rtx_insn *insn,
       dead_debug_insert_temp (debug, DF_REF_REGNO (def), insn,
                              DEBUG_TEMP_BEFORE_WITH_VALUE);
 
-  emit_insn_after (PATTERN (insn), bb_note (bb));
+  rtx_insn *insn_copy = emit_insn_after (PATTERN (insn), bb_note (bb));
+  /* Update the LABEL_NUSES count on any referenced labels. The ideal
+     solution here would be to actually move the instruction instead
+     of copying/deleting it as this loses some notations on the
+     insn.  */
+  mark_jump_label (PATTERN (insn), insn_copy, 0);
   delete_insn (insn);
   return true;
 }