https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84780
--- Comment #5 from Segher Boessenkool <segher at gcc dot gnu.org> --- Insn 55 is a parallel, and that is split into two insns i1 and i2, both numbered as 55. The i1 will never become part of the insn stream. It is this insn that is deleted. Later on insn 55 is combined into insn 100: 55: cc:CC_C=zero_extend(r165:DI)+zero_extend(x2:DI)!=zero_extend(r165:DI+x2:DI) 100: {cc:CC_C=zero_extend(r178:DI)+zero_extend(r198:DI)!=zero_extend(r178:DI+r198:DI);r200:DI=r178:DI+r198:DI;} REG_DEAD r198:DI REG_DEAD r178:DI becomes 100: {cc:CC_C=zero_extend(r178:DI)+zero_extend(r198:DI)!=zero_extend(r178:DI+r198:DI);r200:DI=r178:DI+r198:DI;} REG_DEAD r178:DI REG_DEAD r198:DI and that seems fine, too? Or does something in between use cc? Ah yes, insn 71 does. Somehow insn 100 has a LOG_LINK to 55 though (for cc). This happens at the 55 -> 70 combination.