As mentioned earlier, we should be using HONOR_* on types rather than
flag_finite_math_only.
gcc/ChangeLog:
* value-range.cc (frange::set): Use HONOR_*.
(frange::verify_range): Same.
* value-range.h (frange_val_min): Same.
(frange_val_max): Same.
// For -ffinite-math-only we can drop ranges outside the
// representable numbers to min/max for the type.
- if (flag_finite_math_only)
+ if (!HONOR_INFINITIES (m_type))
{
REAL_VALUE_TYPE min_repr = frange_val_min (m_type);
REAL_VALUE_TYPE max_repr = frange_val_max (m_type);
void
frange::verify_range ()
{
- if (flag_finite_math_only)
- gcc_checking_assert (!maybe_isnan ());
+ if (!undefined_p ())
+ gcc_checking_assert (HONOR_NANS (m_type) || !maybe_isnan ());
switch (m_kind)
{
case VR_UNDEFINED:
inline REAL_VALUE_TYPE
frange_val_min (const_tree type)
{
- if (flag_finite_math_only)
- return real_min_representable (type);
- else
+ if (HONOR_INFINITIES (type))
return dconstninf;
+ else
+ return real_min_representable (type);
}
// Return the maximum value for TYPE.
inline REAL_VALUE_TYPE
frange_val_max (const_tree type)
{
- if (flag_finite_math_only)
- return real_max_representable (type);
- else
+ if (HONOR_INFINITIES (type))
return dconstinf;
+ else
+ return real_max_representable (type);
}
// Return TRUE if R is the minimum value for TYPE.