combine: Fix PR83304
authorSegher Boessenkool <segher@kernel.crashing.org>
Fri, 8 Dec 2017 11:26:35 +0000 (12:26 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Fri, 8 Dec 2017 11:26:35 +0000 (12:26 +0100)
commitb1cf82933e894cbdb21d63653c20258dc8c87997
tree2485c2d642b628103a2d85dd86d4c6aeb9dc1714
parentda472c1b3bc8b2289f93cacaf75472556a3d85cd
combine: Fix PR83304

In PR83304 two insns are combined, where the I2 uses a register that
has a REG_DEAD note on an insn after I2 but before I3.  In such a case
move_deaths should move that death note.  But move_deaths only looks
at the reg_stat[regno].last_death insn, and that field can be zeroed
out (previously, use_crosses_set_p would prevent the combination in
this case).

If the last_death field is zero it means "unknown", not "no death", so
we have to find if there is a REG_DEAD note.

PR rtl-optimization/83304
* combine.c (move_deaths): If we do not know where a register died,
search for it.

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