Make rtl_split_edge work for jumps that fall through (PR72749)
authorSegher Boessenkool <segher@kernel.crashing.org>
Sun, 15 Jan 2017 17:06:00 +0000 (18:06 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Sun, 15 Jan 2017 17:06:00 +0000 (18:06 +0100)
commit81e63b637aef0fc61e85de64b2be62517723e606
tree1bd78fae14e682601ecbd3eb3625b7ca3c4f44f5
parent32a8d3f66a4d02b77774a713e5c4ff8d586af4f4
Make rtl_split_edge work for jumps that fall through (PR72749)

If a jump always falls through but that cannot be optimised away, like
is the case with the PowerPC bdnz insn if its jump target is the same as
the fallthrough, sched gets confused if it schedules some instructions
from before that jump instruction to behind it: it splits the
fallthrough branch, but the jump target isn't updated, and things fall
apart as in the PR.  This patch fixes it.

The second patch fragment makes -fsched-verbose=N work for N>=4; the
currently scheduled fragment can now contain a label.  Everything else
seems to work fine with that.

PR target/72749
* cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
fallthrough.
* haifa-sched.c (dump_insn_stream): Don't crash if there is a label
in the currently scheduled RTL fragment.

From-SVN: r244477
gcc/ChangeLog
gcc/cfgrtl.c
gcc/haifa-sched.c