@@ -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