https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106187
--- Comment #22 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- I notice that the sources seem to do floating-point negation by casting values to integers, xor-ing the sign bit and then casting the result back to a float. This is exactly the sort of operation that is likely to violate the aliasing rules (though I don't know if this is the precise source of the problem in this case).