Skip to content

Commit 4cd8d4f

Browse files
committed
Guard tests, not libc++
1 parent f5bbc2a commit 4cd8d4f

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

libcxx/include/__math/traits.h

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,20 +79,22 @@ _LIBCPP_NODISCARD _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isinf
7979
return false;
8080
}
8181

82-
#ifdef _LIBCPP_PREFERRED_OVERLOAD
8382
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isinf(float __x) _NOEXCEPT {
8483
return __builtin_isinf(__x);
8584
}
8685

87-
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD bool
88-
isinf(double __x) _NOEXCEPT {
86+
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI
87+
#ifdef _LIBCPP_PREFERRED_OVERLOAD
88+
_LIBCPP_PREFERRED_OVERLOAD
89+
#endif
90+
bool
91+
isinf(double __x) _NOEXCEPT {
8992
return __builtin_isinf(__x);
9093
}
9194

9295
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isinf(long double __x) _NOEXCEPT {
9396
return __builtin_isinf(__x);
9497
}
95-
#endif
9698

9799
// isnan
98100

@@ -106,20 +108,22 @@ _LIBCPP_NODISCARD _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isnan
106108
return false;
107109
}
108110

109-
#ifdef _LIBCPP_PREFERRED_OVERLOAD
110111
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isnan(float __x) _NOEXCEPT {
111112
return __builtin_isnan(__x);
112113
}
113114

114-
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD bool
115-
isnan(double __x) _NOEXCEPT {
115+
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI
116+
#ifdef _LIBCPP_PREFERRED_OVERLOAD
117+
_LIBCPP_PREFERRED_OVERLOAD
118+
#endif
119+
bool
120+
isnan(double __x) _NOEXCEPT {
116121
return __builtin_isnan(__x);
117122
}
118123

119124
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isnan(long double __x) _NOEXCEPT {
120125
return __builtin_isnan(__x);
121126
}
122-
#endif
123127

124128
// isnormal
125129

libcxx/test/std/numerics/c.math/isinf.pass.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,13 @@ int main(int, char**) {
7474
// Make sure we can call `std::isinf` with convertible types
7575
{
7676
assert(!std::isinf(ConvertibleTo<float>()));
77+
// When libc++ is layered on top of Bionic's libc, `math.h` exposes a
78+
// function prototype for `isinf(double)` with return type `int`. libc++
79+
// can only work around it via `_LIBCPP_PREFERRED_OVERLOAD`, which is only
80+
// available in modern versions of Clang, and not elsewhere.
81+
#if defined(TEST_COMPILER_CLANG) || !defined(__BIONIC__)
7782
assert(!std::isinf(ConvertibleTo<double>()));
83+
#endif
7884
assert(!std::isinf(ConvertibleTo<long double>()));
7985
}
8086

libcxx/test/std/numerics/c.math/isnan.pass.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,13 @@ int main(int, char**) {
7474
// Make sure we can call `std::isnan` with convertible types
7575
{
7676
assert(!std::isnan(ConvertibleTo<float>()));
77+
// When libc++ is layered on top of Bionic's libc, `math.h` exposes a
78+
// function prototype for `isnan(double)` with return type `int`. libc++
79+
// can only work around it via `_LIBCPP_PREFERRED_OVERLOAD`, which is only
80+
// available in modern versions of Clang, and not elsewhere.
81+
#if defined(TEST_COMPILER_CLANG) || !defined(__BIONIC__)
7782
assert(!std::isnan(ConvertibleTo<double>()));
83+
#endif
7884
assert(!std::isnan(ConvertibleTo<long double>()));
7985
}
8086

0 commit comments

Comments
 (0)