[Bug rtl-optimization/99930] Failure to optimize floating point -abs(x) in nontrivial code at -O2/3
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Apr 6 11:57:05 GMT 2021
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) ])))
More information about the Gcc-bugs
mailing list