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).