ira: Don't substitute into TRAP_IF insns (PR78610)
authorSegher Boessenkool <segher@kernel.crashing.org>
Wed, 30 Nov 2016 14:47:01 +0000 (15:47 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Wed, 30 Nov 2016 14:47:01 +0000 (15:47 +0100)
commit17a938e841d439c5ea73b4fcbd7091ae448a9257
tree3a1302d543b539cda495047e59dba693b11caf0d
parent88811a9753e9297baf6413267ccd51ff2cea2450
ira: Don't substitute into TRAP_IF insns (PR78610)

In the testcase, IRA propagates a constant into a TRAP_IF insn, which
then becomes an unconditional trap.  Unconditional traps are control
flow insns so doing this requires surgery on the cfg.  We cannot do
that here, so instead refuse to do the substitution.

PR rtl-optimization/78610
* ira.c (combine_and_move_insns): Don't substitute into TRAP_IF
instructions.

gcc/testsuite/
PR rtl-optimization/78610
* gcc.c-torture/compile/pr78610.c: New testcase.

From-SVN: r243028
gcc/ChangeLog
gcc/ira.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr78610.c [new file with mode: 0644]