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.

Reply via email to