https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63387
--- Comment #7 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Tobias Burnus from comment #4) > _Bool foo(float x, float y) { return x != x || y != y; } This testcase is not optimized (even with -fno-trapping-math or with |) because x != x is not canonicalized to x unord x (or the reverse, but we should not keep both).