combine: Make code after a new trap unreachable (PR78342)
authorSegher Boessenkool <segher@kernel.crashing.org>
Tue, 29 Nov 2016 02:02:45 +0000 (03:02 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Tue, 29 Nov 2016 02:02:45 +0000 (03:02 +0100)
commita001d4f9b912362c78e38ba3ea6aeddaa97f8eb8
tree7b6b165d26dcdfd5c1a1f4557a6d779abf95ca84
parent48cf0e51e9cd4a78488dc216ed6f190df4c5b481
combine: Make code after a new trap unreachable (PR78342)

Combine can turn a conditional trap into an unconditional trap.  If it
does that it should make the code after it unreachable (an unconditional
trap should be the last insn in its bb, and that bb has no successors).

This patch seems to work.  It is hard to be sure, this is very hard to
trigger.  Quite a few other passes look like they need something similar
as well, but I don't see anything else handling it yet either.

PR rtl-optimization/78342
* combine.c: Include "cfghooks.h".
(try_combine): If we create an unconditional trap, break the basic
block in two just after it, and remove the edge between; also, set
the *new_direct_jump_p flag so that cleanup_cfg is run.

From-SVN: r242947
gcc/ChangeLog
gcc/combine.c