Skip to content

Commit c07b0d8

Browse files
committed
Check constexpr builtins for clang
1 parent 4f49c87 commit c07b0d8

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

libcxx/test/libcxx/numerics/c.math/constexpr-cxx23-clang.pass.cpp

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,37 @@ int main(int, char**) {
4040
double DummyDouble;
4141
long double DummyLongDouble;
4242

43-
ASSERT_CONSTEXPR_CXX23(std::abs(-1) == 1);
44-
ASSERT_CONSTEXPR_CXX23(std::abs(-1L) == 1L);
45-
ASSERT_CONSTEXPR_CXX23(std::abs(-1LL) == 1LL);
46-
ASSERT_CONSTEXPR_CXX23(std::abs(-1.0f) == 1.0f);
47-
ASSERT_CONSTEXPR_CXX23(std::abs(-1.0) == 1.0);
48-
ASSERT_CONSTEXPR_CXX23(std::abs(-1.0L) == 1.0L);
43+
// TODO(LLVM 22): Remove `__has_constexpr_builtin` conditional once support for Clang 19 is dropped.
44+
#if __has_constexpr_builtin(__builtin_abs)
45+
ASSERT_CONSTEXPR_CXX23(std::abs(-1) == 1);
46+
#else
47+
ASSERT_NOT_CONSTEXPR_CXX23(std::abs(-1) == 1);
48+
#endif
49+
#if __has_constexpr_builtin(__builtin_labs)
50+
ASSERT_CONSTEXPR_CXX23(std::abs(-1L) == 1L);
51+
#else
52+
ASSERT_NOT_CONSTEXPR_CXX23(std::abs(-1L) == 1L);
53+
#endif
54+
#if __has_constexpr_builtin(__builtin_llabs)
55+
ASSERT_CONSTEXPR_CXX23(std::abs(-1LL) == 1LL);
56+
#else
57+
ASSERT_NOT_CONSTEXPR_CXX23(std::abs(-1LL) == 1LL);
58+
#endif
59+
#if __has_constexpr_builtin(__builtin_fabsf)
60+
ASSERT_CONSTEXPR_CXX23(std::abs(-1.0f) == 1.0f);
61+
#else
62+
ASSERT_NOT_CONSTEXPR_CXX23(std::abs(-1.0f) == 1.0f);
63+
#endif
64+
#if __has_constexpr_builtin(__builtin_fabs)
65+
ASSERT_CONSTEXPR_CXX23(std::abs(-1.0) == 1.0);
66+
#else
67+
ASSERT_NOT_CONSTEXPR_CXX23(std::abs(-1.0) == 1.0);
68+
#endif
69+
#if __has_constexpr_builtin(__builtin_fabsl)
70+
ASSERT_CONSTEXPR_CXX23(std::abs(-1.0L) == 1.0L);
71+
#else
72+
ASSERT_NOT_CONSTEXPR_CXX23(std::abs(-1.0L) == 1.0L);
73+
#endif
4974

5075
ASSERT_NOT_CONSTEXPR_CXX23(std::labs(-1L) == 1L);
5176
ASSERT_NOT_CONSTEXPR_CXX23(std::llabs(-1LL) == 1LL);

0 commit comments

Comments
 (0)