Commit 0948d23f by Eric Botcazou Committed by Eric Botcazou

re PR rtl-optimization/80474 (ipa-cp wrongly adding LO(symbol) twice)

	PR rtl-optimization/80474
	* reorg.c (update_block): Do not ignore instructions in a delay slot.

From-SVN: r249219
parent d1236680
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> 2017-06-15 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead * config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
......
...@@ -1694,9 +1694,8 @@ own_thread_p (rtx thread, rtx label, int allow_fallthrough) ...@@ -1694,9 +1694,8 @@ own_thread_p (rtx thread, rtx label, int allow_fallthrough)
} }
/* Called when INSN is being moved from a location near the target of a jump. /* 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 We leave a marker of the form (use (INSN)) immediately in front of WHERE
of WHERE for mark_target_live_regs. These markers will be deleted when for mark_target_live_regs. These markers will be deleted at the end.
reorg finishes.
We used to try to update the live status of registers if WHERE is at 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 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) ...@@ -1705,16 +1704,10 @@ own_thread_p (rtx thread, rtx label, int allow_fallthrough)
static void static void
update_block (rtx_insn *insn, rtx_insn *where) 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); 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 /* INSN might be making a value live in a block where it didn't use to
be. So recompute liveness information for this block. */ be. So recompute liveness information for this block. */
incr_ticks_for_insn (insn); incr_ticks_for_insn (insn);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment