https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107569

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
__builtin_isfinite (x) is implemented as
~UNGT_EXPR<ABS_EXPR<x>, DBL_MAX>.
So, if we have:
  _3 = ABS_EXPR <x_2(D)>;
  _4 = _3 u> 1.79769313486231570814527423731704356798070567525844996599e+308;
  _5 = ~_4;
  return _5;
for assume function, we should start with [1,1] assumption on _5, that implies
_4 [0,0], and from UNGT_EXPR being false, we should derive that
_3 is [-inf, 1.79769313486231570814527423731704356798070567525844996599e+308]
and not NaN (if any operand is NaN, UNGT_EXPR is true, it stands for unordered
or greater).
And from _3 being [-inf,
1.79769313486231570814527423731704356798070567525844996599e+308] not NaN
we should derive that x_2(D) is
[-1.79769313486231570814527423731704356798070567525844996599e+308,
1.79769313486231570814527423731704356798070567525844996599e+308] not NaN
(aka finite number).

Reply via email to