------- Comment #5 from bonzini at gnu dot org  2005-11-25 19:12 -------
Another failure from glibc's tests is more severe: __DBL_MAX__ * __DBL_MAX__ -
__DBL_MAX * __DBL_MAX__ is turned into an INF rather than a NAN (as would
happen on most targets) or zero (as would happen on x87 because it computes
everything in long double).

This can be seen with a program like

  extern void abort (void)
  {
    double nan = __DBL_MAX__ * __DBL_MAX__ - __DBL_MAX * __DBL_MAX__;
    if (nan == nan && nan != 0.0) abort ();
  }

This seems more serious, to the point that fused multiply-add instructions
should be disabled unless !HONOR_NANS || !MODE_HAS_INFINITIES for the given
mode.

CCing Eric since he recently had problems with ia64 fma
(http://gcc.gnu.org/ml/gcc/2005-10/msg01036.html).


-- 

bonzini at gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amodra at bigpond dot net
                   |                            |dot au, bonzini at gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24819

Reply via email to