https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91250
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Target| |x86_64-*-*, i?86-*-* Status|UNCONFIRMED |NEW Last reconfirmed| |2019-07-24 Component|tree-optimization |middle-end Version|unknown |10.0 Ever confirmed|0 |1 --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. We're canonicalizing this as _1 = .FMA (b_3(D), a_4(D), c_5(D)); _6 = -_1; which expansion doesn't handle. It works without -ffast-math. When trying to fix also consider float foo(float a, float b, float c) { return -(a * b + c); }