https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24021
--- Comment #24 from Jakub Jelinek <jakub at gcc dot gnu.org> --- It would, but it would also give up quite often. For VRP we can do better, because we don't have just the options exactly correct answer or give up, we can have ranges. So, say for flag_rounding_math, we can do real_arithmetics and real_convert, if inexact or any rounding happens during real_convert, we can ensure that on upper bound we round towards positive infinity and for lower bound towards negative infinity. The flush of denormals can be also handled. And for composite modes, either indeed give up or do something roughly ok too. For math functions have some param with worst ulp error to be used for VRP. Another case is signed zeros, if it is unsure which zero sign would be used we can e.g. have a [-0.0, 0.0] range etc. And, it would be nice to have some way to express result is or might be a qNaN, sNaN, +/- infinity. While the infinities could stand at the end of ranges, so have [5.0, +inf] range, for NaNs it would be nice to know whether the value can or can't be a NaN and even if it has to be NaN, whether it must be a particular NaN or any NaN.