https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96965
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2020-09-08 Status|UNCONFIRMED |NEW --- Comment #2 from Segher Boessenkool <segher at gcc dot gnu.org> --- insn_cost 8 for 6: r91:SI=zero_extend([`i']) insn_cost 4 for 8: {flags:CCC=cmp(r91:SI#0+0x1,r91:SI#0);r92:QI=r91:SI#0+0x1 ;} REG_DEAD r91:SI insn_cost 4 for 33: r89:QI=ltu(flags:CCC,0) REG_DEAD flags:CCC insn_cost 4 for 17: [`i']=r92:QI REG_DEAD r92:QI 8+17 does not work, because the combined insn replaces 17, but it has to stay before 33. 8+33+17 is never tried. I don't immediately see why not? It may still not work because of the irregularities in the x86 ISA, but 6+8+33+17 should work (if that would be tried... but if 8+33+17 already is not done, that needs to be fixed first).