https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86999
Alexander Monakov <amonakov at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amonakov at gcc dot gnu.org --- Comment #1 from Alexander Monakov <amonakov at gcc dot gnu.org> --- 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.