diff --git a/libcxx/include/math.h b/libcxx/include/math.h --- a/libcxx/include/math.h +++ b/libcxx/include/math.h @@ -380,7 +380,12 @@ int __libcpp_fpclassify(_A1 __lcpp_x) _NOEXCEPT { +#if __has_builtin(__builtin_fpclassify) + return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, + FP_ZERO, __lcpp_x); +#else return fpclassify(__lcpp_x); +#endif } #undef fpclassify @@ -426,7 +431,11 @@ bool __libcpp_isfinite(_A1 __lcpp_x) _NOEXCEPT { +#if __has_builtin(__builtin_isfinite) + return __builtin_isfinite(__lcpp_x); +#else return isfinite(__lcpp_x); +#endif } #undef isfinite @@ -460,7 +469,11 @@ bool __libcpp_isinf(_A1 __lcpp_x) _NOEXCEPT { +#if __has_builtin(__builtin_isinf) + return __builtin_isinf(__lcpp_x); +#else return isinf(__lcpp_x); +#endif } #undef isinf @@ -556,7 +569,11 @@ bool __libcpp_isnormal(_A1 __lcpp_x) _NOEXCEPT { +#if __has_builtin(__builtin_isnormal) + return __builtin_isnormal(__lcpp_x); +#else return isnormal(__lcpp_x); +#endif } #undef isnormal