https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91730
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Martin Liška from comment #5) > The transformation is from: > > _663 = T1$1_55 + _293; > _651 = (float) _663; > > where T1$1_55 and _293 are doubles. To: > > _758 = (float) T1$1_55; > _759 = (float) _293; > _760 = _758 + _759; > _651 = (float) _760; OK, so thats invalid for example when T1$1_55 and _293 are FP values that cannot be represented in 'float' but their sum can. That's outside of what we generally allow with -ffast-math. It would be valid if one of T1$1_55 or _293 are already float.