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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org
          Component|c++                         |libstdc++

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
-ffast-math implies -ffinite-math-only which causes GCC to assume no inputs to
isnan/fpclassify are NaN.  As a programmer using -ffast-math you give this
guarantee to the compiler, so what you report is a pilot error?

I'm not sure if std::numeric_limits is wrong with -ffinite-math-only given
NaNs are still "supported" as in

double nan = __builtin_nan("");
int main()
{
  __builtin_printf ("%f\n", nan);
  return __builtin_isnan (nan); 
}
> g++-7 t.C  -ffast-math -O2
> ./a.out 
nan
> echo $?
0

so NaNs are there.  But in the testcase I broke the contract with the compiler
with feeding a NaN into isnan().

I guess the compiler could have as well replaced the NaN generated by
__builtin_nan("") with zero.

Reply via email to