http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59534
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pinskia at gcc dot gnu.org --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- This is broken by r204194. I'm afraid it is generally unsafe to do it if the inner comparison (the second one) is floating point comparison (regardless of -ffast-math or not), because one can have: if (some_condition) { if (float_val != 6.5) ... } else { if (float_val2 != 7.2) ... } and float_val could be uninitialized/random if !some_condition, similarly float_val2 uninitialized/random if some_condition. In that case even with -ffast-math it could fail, the uninitialized value could be say sNaN (or denormal as in this case).