Commit fb54f550 by Segher Boessenkool Committed by Segher Boessenkool

combine: Fix PR84780 (more LOG_LINKS trouble)

There still are situations where we have stale LOG_LINKS.  This causes
combine to try two-insn combinations I2->I3 where the register set by
I2 is used before I3 as well.  Not good.

This patch fixes it by checking for this situation in can_combine_p
(similar to what we already do for three and four insn combinations).

From-SVN: r258452
parent d67b5d8d
2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/84169
PR rtl-optimization/84780
* combine.c (can_combine_p): Check for a 2-insn combination whether
the destination register is used between the two insns, too.
2018-03-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/84803
......
......@@ -1990,6 +1990,7 @@ can_combine_p (rtx_insn *insn, rtx_insn *i3, rtx_insn *pred ATTRIBUTE_UNUSED,
&& (reg_used_between_p (dest, succ2, i3)
|| reg_used_between_p (dest, succ, succ2)))
|| (!succ2 && succ && reg_used_between_p (dest, succ, i3))
|| (!succ2 && !succ && reg_used_between_p (dest, insn, i3))
|| (succ
/* SUCC and SUCC2 can be split halves from a PARALLEL; in
that case SUCC is not in the insn stream, so use SUCC2
......
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