https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86999
--- Comment #2 from asd_ <asd0025 at gmail dot com> --- (In reply to Alexander Monakov from comment #1) > For the first problem -fno-signed-zeros is a bit of a red herring, the real > reason is enabling -fassociative-math makes GCC turn > > return n * p + p; > > to 'return (n + 1) * p;' and while we slightly optimize it on RTL we don't > recover fma from it. > > For the second problem, the expression '(v4f)v' is {0.0f, 0.0f, -0.0f, > -0.0f} and by specifying -fno-signed-zeros you're allowing the compiler to > change it to all-positive-zeros, making the function a no-op. So that is not > a bug. Thanks for the explanation! I hope there will be one more FMA pass in the RTL stages in the future.:)