Intel double extended-precision (long double). By default assume 1 to
enable the usage of compiler builtin on math.h. */
#define __FP_BUILTIN_FPCLASSIFY_DENORMAL 1
+
+/* __FP_BUILTIN_ISINF_SIGN_DENORMAL is defined to 1 if compiler supports
+ handling pseudo-dernormal numbers with isinf_sign builtin. */
+#define __FP_BUILTIN_ISINF_SIGN_DENORMAL 1
? __isinff128 (x) : __builtin_isinf_sign (x))
# elif (__GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__) \
|| __glibc_clang_prereq (3,7)
-# define isinf(x) __builtin_isinf_sign (x)
+# define isinf(x) __MATH_TG_BUILTIN_CLASSIFY ((x), \
+ __builtin_isinf_sign, (x), \
+ isinf, (x), \
+ __FP_BUILTIN_ISINF_SIGN_DENORMAL)
# else
# define isinf(x) __MATH_TG ((x), __isinf, (x))
# endif
/* Neither GCC (bug 123161) nor clang (issue 172533) handles pseudo-normal
numbers correctly with fpclassify builtin. */
#define __FP_BUILTIN_FPCLASSIFY_DENORMAL 0
+
+/* Neither GCC (bug 123173) nor clang (issue 172651) handles pseudo-normal
+ numbers correctly with isinf_sign builtin. */
+#define __FP_BUILTIN_ISINF_SIGN_DENORMAL 0
TEST_COMPARE (feclearexcept (FE_INVALID), 0);
TEST_COMPARE (fpclassify (inputs[i].value), FP_NAN);
TEST_COMPARE (fetestexcept (FE_INVALID), 0);
+
+ TEST_COMPARE (feclearexcept (FE_INVALID), 0);
+ TEST_COMPARE (isinf (inputs[i].value), 0);
+ TEST_COMPARE (fetestexcept (FE_INVALID), 0);
}
return 0;