------- 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