https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83304
--- Comment #11 from Segher Boessenkool <segher at gcc dot gnu.org> --- Author: segher Date: Fri Dec 8 11:26:35 2017 New Revision: 255506 URL: https://gcc.gnu.org/viewcvs?rev=255506&root=gcc&view=rev Log: 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. Modified: trunk/gcc/ChangeLog trunk/gcc/combine.c