From 631021e0aaefbf9fde4b4472e4ec1d51fffb9bbd Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 1 Jul 2014 08:27:49 -0700 Subject: alpha: Fix isnan The isunordered formulation raises SIGFPE for SNaN. --- sysdeps/alpha/fpu/bits/mathinline.h | 23 ----------------------- sysdeps/alpha/fpu/s_isnan.c | 4 +++- 2 files changed, 3 insertions(+), 24 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/alpha/fpu/bits/mathinline.h b/sysdeps/alpha/fpu/bits/mathinline.h index 3d64b56107..83f3b4ad0a 100644 --- a/sysdeps/alpha/fpu/bits/mathinline.h +++ b/sysdeps/alpha/fpu/bits/mathinline.h @@ -120,29 +120,6 @@ __NTH (__signbitl (long double __x)) return __builtin_signbitl (__x); #endif } - -/* Test for NaN. Used in the isnan() macro. */ - -__MATH_INLINE int -__NTH (__isnanf (float __x)) -{ - return isunordered (__x, __x); -} - -__MATH_INLINE int -__NTH (__isnan (double __x)) -{ - return isunordered (__x, __x); -} - -#ifndef __NO_LONG_DOUBLE_MATH -__MATH_INLINE int -__NTH (__isnanl (long double __x)) -{ - return isunordered (__x, __x); -} -#endif - #endif /* C99 */ #endif /* __NO_MATH_INLINES */ diff --git a/sysdeps/alpha/fpu/s_isnan.c b/sysdeps/alpha/fpu/s_isnan.c index adfb4ccf36..d664f0cb10 100644 --- a/sysdeps/alpha/fpu/s_isnan.c +++ b/sysdeps/alpha/fpu/s_isnan.c @@ -31,7 +31,9 @@ int __isnan (double x) { - return isunordered (x, x); + uint64_t ix; + EXTRACT_WORDS64 (ix, x); + return ix * 2 > 0xffe0000000000000ul; } hidden_def (__isnan) -- cgit 1.4.1