re PR rtl-optimization/80474 (ipa-cp wrongly adding LO(symbol) twice)
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 15 Jun 2017 13:24:53 +0000 (13:24 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 15 Jun 2017 13:24:53 +0000 (13:24 +0000)
PR rtl-optimization/80474
* reorg.c (update_block): Do not ignore instructions in a delay slot.

From-SVN: r249219

gcc/ChangeLog
gcc/reorg.c

index f460df6bd0deb75ebb17b6290f2ba44892b8dc7c..fc9554f0142f9e30b12471e153f8bced42c40f18 100644 (file)
@@ -1,3 +1,8 @@
+2017-06-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR rtl-optimization/80474
+       * reorg.c (update_block): Do not ignore instructions in a delay slot.
+
 2017-06-15  Segher Boessenkool  <segher@kernel.crashing.org>
 
        * config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
index 1a6fd86e2866fc11051bd9b40ac95b225a96aac3..dbd74ab24045bbc8b51dc9b41226a9832f382270 100644 (file)
@@ -1694,9 +1694,8 @@ own_thread_p (rtx thread, rtx label, int allow_fallthrough)
 }
 \f
 /* Called when INSN is being moved from a location near the target of a jump.
-   We leave a marker of the form (use (INSN)) immediately in front
-   of WHERE for mark_target_live_regs.  These markers will be deleted when
-   reorg finishes.
+   We leave a marker of the form (use (INSN)) immediately in front of WHERE
+   for mark_target_live_regs.  These markers will be deleted at the end.
 
    We used to try to update the live status of registers if WHERE is at
    the start of a basic block, but that can't work since we may remove a
@@ -1705,16 +1704,10 @@ own_thread_p (rtx thread, rtx label, int allow_fallthrough)
 static void
 update_block (rtx_insn *insn, rtx_insn *where)
 {
-  /* Ignore if this was in a delay slot and it came from the target of
-     a branch.  */
-  if (INSN_FROM_TARGET_P (insn))
-    return;
-
   emit_insn_before (gen_rtx_USE (VOIDmode, insn), where);
 
   /* INSN might be making a value live in a block where it didn't use to
      be.  So recompute liveness information for this block.  */
-
   incr_ticks_for_insn (insn);
 }