https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99930
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2021-04-06 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Target| |x86_64-*-* Component|target |rtl-optimization --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. At -O1 Trying 10 -> 12: 10: {r91:SF=abs(r92:SF);use [`*.LC0'];clobber flags:CC;} REG_UNUSED flags:CC REG_DEAD r92:SF 12: {r94:SF=-r91:SF;use r95:V4SF;clobber flags:CC;} REG_DEAD r95:V4SF REG_DEAD r91:SF REG_UNUSED flags:CC Failed to match this instruction: (parallel [ (set (reg:SF 94) (neg:SF (abs:SF (reg:SF 92 [ *n_9(D) ])))) (use (reg:V4SF 95)) (clobber (reg:CC 17 flags)) ]) Successfully matched this instruction: (parallel [ (set (reg:SF 94) (neg:SF (abs:SF (reg:SF 92 [ *n_9(D) ])))) (use (reg:V4SF 95)) ]) allowing combination of insns 10 and 12 original costs 4 + 4 = 8 replacement cost 8 but with -O2: Trying 10 -> 12: 10: {r91:SF=abs(r92:SF);use r93:V4SF;clobber flags:CC;} REG_DEAD r92:SF REG_UNUSED flags:CC 12: {r94:SF=-r91:SF;use r95:V4SF;clobber flags:CC;} REG_DEAD r91:SF REG_UNUSED flags:CC Can't combine i2 into i3 we're later trying Trying 10, 12 -> 13: 10: {r91:SF=abs(r92:SF);use r93:V4SF;clobber flags:CC;} REG_DEAD r92:SF REG_UNUSED flags:CC 12: {r94:SF=-r91:SF;use r95:V4SF;clobber flags:CC;} REG_DEAD r91:SF REG_UNUSED flags:CC 13: flags:CCFP=cmp(r90:SF,r94:SF) REG_DEAD r94:SF Failed to match this instruction: (set (reg:CCFP 17 flags) (compare:CCFP (neg:SF (abs:SF (reg:SF 92 [ *n_9(D) ]))) (reg/v:SF 90 [ m ]))) Failed to match this instruction: (set (reg:SF 94) (abs:SF (reg:SF 92 [ *n_9(D) ])))