Skip to content

Commit a8d0ecc

Browse files
committed
Remove unrelated changes
Let's adjust tests and implementation in a seperate PR.
1 parent 66c9942 commit a8d0ecc

File tree

34 files changed

+239
-107
lines changed

34 files changed

+239
-107
lines changed

libcxx/docs/ReleaseNotes/20.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ Deprecations and Removals
6464
removed in language modes prior to C++20. If you are using these features prior to C++20, you will need to
6565
update to ``-std=c++20``.
6666

67-
- The relational operators for ``std::chrono::weekday`` are removed entirely, and the
68-
``_LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS`` macro that was used to re-enable this extension is
67+
- TODO: The relational operators for ``std::chrono::weekday`` will be removed entirely, and the
68+
``_LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS`` macro that was used to re-enable this extension will be
6969
ignored in LLVM 20.
7070

7171
- The ``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro no longer has any effect. ``std::allocator<const T>`` is not

libcxx/include/__chrono/weekday.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,25 @@ _LIBCPP_HIDE_FROM_ABI inline constexpr bool operator==(const weekday& __lhs, con
7979
return __lhs.c_encoding() == __rhs.c_encoding();
8080
}
8181

82+
// TODO(LLVM 20): Remove the escape hatch
83+
# ifdef _LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS
84+
_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator<(const weekday& __lhs, const weekday& __rhs) noexcept {
85+
return __lhs.c_encoding() < __rhs.c_encoding();
86+
}
87+
88+
_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator>(const weekday& __lhs, const weekday& __rhs) noexcept {
89+
return __rhs < __lhs;
90+
}
91+
92+
_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator<=(const weekday& __lhs, const weekday& __rhs) noexcept {
93+
return !(__rhs < __lhs);
94+
}
95+
96+
_LIBCPP_HIDE_FROM_ABI inline constexpr bool operator>=(const weekday& __lhs, const weekday& __rhs) noexcept {
97+
return !(__lhs < __rhs);
98+
}
99+
# endif // _LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS
100+
82101
_LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator+(const weekday& __lhs, const days& __rhs) noexcept {
83102
auto const __mu = static_cast<long long>(__lhs.c_encoding()) + __rhs.count();
84103
auto const __yr = (__mu >= 0 ? __mu : __mu - 6) / 7;

libcxx/include/__type_traits/promote.h

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,20 @@
1313
#include <__type_traits/integral_constant.h>
1414
#include <__type_traits/is_arithmetic.h>
1515

16+
#if defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER == 1700
17+
# include <__type_traits/is_same.h>
18+
# include <__utility/declval.h>
19+
#endif
20+
1621
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
1722
# pragma GCC system_header
1823
#endif
1924

2025
_LIBCPP_BEGIN_NAMESPACE_STD
2126

27+
// TODO(LLVM-20): Remove this workaround
28+
#if !defined(_LIBCPP_CLANG_VER) || _LIBCPP_CLANG_VER != 1700
29+
2230
template <class... _Args>
2331
class __promote {
2432
static_assert((is_arithmetic<_Args>::value && ...));
@@ -42,6 +50,79 @@ class __promote {
4250
using type = decltype((__test(_Args()) + ...));
4351
};
4452

53+
#else
54+
55+
template <class _Tp>
56+
struct __numeric_type {
57+
static void __test(...);
58+
static float __test(float);
59+
static double __test(char);
60+
static double __test(int);
61+
static double __test(unsigned);
62+
static double __test(long);
63+
static double __test(unsigned long);
64+
static double __test(long long);
65+
static double __test(unsigned long long);
66+
# ifndef _LIBCPP_HAS_NO_INT128
67+
static double __test(__int128_t);
68+
static double __test(__uint128_t);
69+
# endif
70+
static double __test(double);
71+
static long double __test(long double);
72+
73+
typedef decltype(__test(std::declval<_Tp>())) type;
74+
static const bool value = _IsNotSame<type, void>::value;
75+
};
76+
77+
template <>
78+
struct __numeric_type<void> {
79+
static const bool value = true;
80+
};
81+
82+
template <class _A1,
83+
class _A2 = void,
84+
class _A3 = void,
85+
bool = __numeric_type<_A1>::value && __numeric_type<_A2>::value && __numeric_type<_A3>::value>
86+
class __promote_imp {
87+
public:
88+
static const bool value = false;
89+
};
90+
91+
template <class _A1, class _A2, class _A3>
92+
class __promote_imp<_A1, _A2, _A3, true> {
93+
private:
94+
typedef typename __promote_imp<_A1>::type __type1;
95+
typedef typename __promote_imp<_A2>::type __type2;
96+
typedef typename __promote_imp<_A3>::type __type3;
97+
98+
public:
99+
typedef decltype(__type1() + __type2() + __type3()) type;
100+
static const bool value = true;
101+
};
102+
103+
template <class _A1, class _A2>
104+
class __promote_imp<_A1, _A2, void, true> {
105+
private:
106+
typedef typename __promote_imp<_A1>::type __type1;
107+
typedef typename __promote_imp<_A2>::type __type2;
108+
109+
public:
110+
typedef decltype(__type1() + __type2()) type;
111+
static const bool value = true;
112+
};
113+
114+
template <class _A1>
115+
class __promote_imp<_A1, void, void, true> {
116+
public:
117+
typedef typename __numeric_type<_A1>::type type;
118+
static const bool value = true;
119+
};
120+
121+
template <class _A1, class _A2 = void, class _A3 = void>
122+
class __promote : public __promote_imp<_A1, _A2, _A3> {};
123+
124+
#endif // !defined(_LIBCPP_CLANG_VER) || _LIBCPP_CLANG_VER >= 1700
125+
45126
_LIBCPP_END_NAMESPACE_STD
46127

47128
#endif // _LIBCPP___TYPE_TRAITS_PROMOTE_H

libcxx/test/libcxx/atomics/diagnose_invalid_memory_order.verify.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// This test fails with Clang <18 because diagnose_if doesn't emit all of the
1010
// diagnostics when -fdelayed-template-parsing is enabled, like it is in MSVC
1111
// mode.
12-
// XFAIL: msvc
12+
// XFAIL: msvc && clang-17
1313

1414
// REQUIRES: diagnose-if-support
1515

libcxx/test/libcxx/clang_tidy.gen.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
// The GCC compiler flags are not always compatible with clang-tidy.
2828
// UNSUPPORTED: gcc
2929
30+
// Clang 17 has false positives.
31+
// UNSUPPORTED: clang-17
32+
3033
{lit_header_restrictions.get(header, '')}
3134
3235
// TODO: run clang-tidy with modules enabled once they are supported

libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// UNSUPPORTED: c++03
1313

1414
// TODO: Investigate these failures which break the CI.
15-
// UNSUPPORTED: clang-18, clang-19
15+
// UNSUPPORTED: clang-17, clang-18, clang-19
1616

1717
// The Android libc++ tests are run on a non-Android host, connected to an
1818
// Android device over adb. gdb needs special support to make this work (e.g.

libcxx/test/libcxx/ranges/range.adaptors/range.lazy.split/no_unique_address.compile.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
// UNSUPPORTED: c++03, c++11, c++14, c++17
10-
// XFAIL: msvc
10+
// XFAIL: msvc && clang-17
1111

1212
// class lazy_split_view {
1313
// _LIBCPP_NO_UNIQUE_ADDRESS _View __base_ = _View();

libcxx/test/libcxx/ranges/range.adaptors/range.split/no_unique_address.compile.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
// UNSUPPORTED: c++03, c++11, c++14, c++17
10-
// XFAIL: msvc
10+
// XFAIL: msvc && clang-17
1111

1212
// class split_view {
1313
// _LIBCPP_NO_UNIQUE_ADDRESS _View __base_ = _View();

libcxx/test/libcxx/ranges/range.factories/range.istream.view/no_unique_address.compile.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
// UNSUPPORTED: no-localization
1010
// UNSUPPORTED: c++03, c++11, c++14, c++17
11-
// XFAIL: msvc
11+
// XFAIL: msvc && clang-17
1212

1313
// Test the libc++ extension that the value stored in `std::ranges::istream_view` has been marked
1414
// as _LIBCPP_NO_UNIQUE_ADDRESS

libcxx/test/libcxx/utilities/expected/expected.expected/transform_error.mandates.verify.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// Clang-18 fixed some spurious clang diagnostics. Once clang-18 is the
10+
// minimum required version these obsolete tests can be removed.
11+
// TODO(LLVM-20) remove spurious clang diagnostic tests.
12+
913
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
1014

1115
// With clang-cl, some warnings have a 'which is a Microsoft extension' suffix
@@ -55,12 +59,12 @@ void test() {
5559
{
5660
std::expected<int, int> e;
5761
e.transform_error(return_unexpected<int&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
58-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
62+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
5963
// expected-error-re@*:* {{static assertion failed {{.*}}[expected.object.general] A program that instantiates the definition of template expected<T, E> for {{.*}} is ill-formed.}}
6064
// expected-error-re@*:* 0-1 {{union member {{.*}} has reference type {{.*}}}}
6165

6266
e.transform_error(return_no_object<int&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
63-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
67+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
6468
// expected-error-re@*:* {{static assertion failed {{.*}}[expected.object.general] A program that instantiates the definition of template expected<T, E> for {{.*}} is ill-formed.}}
6569
// expected-warning-re@*:* 0-1 {{union member {{.*}} has reference type {{.*}}, which is a Microsoft extension}}
6670
}
@@ -69,27 +73,27 @@ void test() {
6973
{
7074
const std::expected<int, int> e;
7175
e.transform_error(return_unexpected<const int &>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
72-
// expected-error-re@*:* 2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
76+
// expected-error-re@*:* 0-2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
7377
e.transform_error(return_no_object<const int &>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
74-
// expected-error-re@*:* 2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
78+
// expected-error-re@*:* 0-2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
7579
}
7680

7781
// Test && overload
7882
{
7983
std::expected<int, int> e;
8084
std::move(e).transform_error(return_unexpected<int&&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
81-
// expected-error-re@*:* 2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
85+
// expected-error-re@*:* 0-2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
8286
std::move(e).transform_error(return_no_object<int&&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
83-
// expected-error-re@*:* 2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
87+
// expected-error-re@*:* 0-2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
8488
}
8589

8690
// Test const&& overload
8791
{
8892
const std::expected<int, int> e;
8993
std::move(e).transform_error(return_unexpected<const int&&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
90-
// expected-error-re@*:* 2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
94+
// expected-error-re@*:* 0-2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
9195
std::move(e).transform_error(return_no_object<const int&&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
92-
// expected-error-re@*:* 2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
96+
// expected-error-re@*:* 0-2 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
9397
}
9498
}
9599
// clang-format on

libcxx/test/libcxx/utilities/expected/expected.void/transform_error.mandates.verify.cpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
// Clang-18 fixed some spurious clang diagnostics. Once clang-18 is the
10+
// minumum required version these obsolete tests can be removed.
11+
// TODO(LLVM-20) remove spurious clang diagnostic tests.
12+
913
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
1014

1115
// With clang-cl, some warnings have a 'which is a Microsoft extension' suffix
@@ -56,13 +60,13 @@ void test() {
5660
{
5761
std::expected<void, int> e;
5862
e.transform_error(return_unexpected<int&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
59-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
63+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
6064
// expected-error-re@*:* {{static assertion failed {{.*}}A program that instantiates expected<T, E> with a E that is not a valid argument for unexpected<E> is ill-formed}}
61-
// expected-error-re@*:* {{call to deleted constructor of {{.*}}}}
65+
// expected-error-re@*:* 0-1 {{call to deleted constructor of {{.*}}}}
6266
// expected-error-re@*:* 0-1 {{union member {{.*}} has reference type {{.*}}}}
6367

6468
e.transform_error(return_no_object<int&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
65-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
69+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
6670
// expected-error-re@*:* {{static assertion failed {{.*}}A program that instantiates expected<T, E> with a E that is not a valid argument for unexpected<E> is ill-formed}}
6771
// expected-warning-re@*:* 0-1 {{union member {{.*}} has reference type {{.*}}, which is a Microsoft extension}}
6872
}
@@ -71,28 +75,28 @@ void test() {
7175
{
7276
const std::expected<void, int> e;
7377
e.transform_error(return_unexpected<const int &>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
74-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
78+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
7579
e.transform_error(return_no_object<const int &>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
76-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
77-
// expected-error-re@*:* {{call to deleted constructor of {{.*}}}}
80+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
81+
// expected-error-re@*:* 0-1 {{call to deleted constructor of {{.*}}}}
7882
}
7983

8084
// Test && overload
8185
{
8286
std::expected<void, int> e;
8387
std::move(e).transform_error(return_unexpected<int&&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
84-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
88+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
8589
std::move(e).transform_error(return_no_object<int&&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
86-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
90+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
8791
}
8892

8993
// Test const&& overload
9094
{
9195
const std::expected<void, int> e;
9296
std::move(e).transform_error(return_unexpected<const int&&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
93-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
97+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
9498
std::move(e).transform_error(return_no_object<const int&&>); // expected-error-re@*:* {{static assertion failed {{.*}}The result of {{.*}} must be a valid template argument for unexpected}}
95-
// expected-error-re@*:* {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
99+
// expected-error-re@*:* 0-1 {{{{(excess elements in struct initializer|no matching constructor for initialization of)}}{{.*}}}}
96100
}
97101
}
98102
// clang-format on

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/fetch_add.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// Older versions of clang have a bug with atomic builtins affecting double and long double.
1212
// Fixed by 5fdd0948.
13-
// XFAIL: target=powerpc-ibm-{{.*}} && clang-18
13+
// XFAIL: target=powerpc-ibm-{{.*}} && (clang-17 || clang-18)
1414

1515
// https://github.com/llvm/llvm-project/issues/72893
1616
// XFAIL: target={{x86_64-.*}} && tsan

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/fetch_sub.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// Older versions of clang have a bug with atomic builtins affecting double and long double.
1212
// Fixed by 5fdd0948.
13-
// XFAIL: target=powerpc-ibm-{{.*}} && clang-18
13+
// XFAIL: target=powerpc-ibm-{{.*}} && (clang-17 || clang-18)
1414

1515
// https://github.com/llvm/llvm-project/issues/72893
1616
// XFAIL: target={{x86_64-.*}} && tsan

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/operator.minus_equals.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// Older versions of clang have a bug with atomic builtins affecting double and long double.
1212
// Fixed by 5fdd0948.
13-
// XFAIL: target=powerpc-ibm-{{.*}} && clang-18
13+
// XFAIL: target=powerpc-ibm-{{.*}} && (clang-17 || clang-18)
1414

1515
// floating-point-type operator-=(floating-point-type) volatile noexcept;
1616
// floating-point-type operator-=(floating-point-type) noexcept;

libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/operator.plus_equals.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// Older versions of clang have a bug with atomic builtins affecting double and long double.
1212
// Fixed by 5fdd0948.
13-
// XFAIL: target=powerpc-ibm-{{.*}} && clang-18
13+
// XFAIL: target=powerpc-ibm-{{.*}} && (clang-17 || clang-18)
1414

1515
// floating-point-type operator+=(floating-point-type) volatile noexcept;
1616
// floating-point-type operator+=(floating-point-type) noexcept;

libcxx/test/std/experimental/simd/simd.class/simd_copy.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// Older versions of clang may encounter a backend error (see 0295c2ad):
1212
// Pass-by-value arguments with alignment greater than register width are not supported.
13-
// XFAIL: target=powerpc{{.*}}-ibm-{{.*}} clang-18
13+
// XFAIL: target=powerpc{{.*}}-ibm-{{.*}} && (clang-17 || clang-18)
1414

1515
// <experimental/simd>
1616
//

libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array14.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// test sized operator delete[] replacement.
1010

1111
// These compiler versions don't enable sized deallocation by default.
12-
// UNSUPPORTED: clang-18
12+
// UNSUPPORTED: clang-17, clang-18
1313

1414
// UNSUPPORTED: sanitizer-new-delete, c++03, c++11
1515
// XFAIL: apple-clang

libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete14.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// Test sized operator delete replacement.
1010

1111
// These compiler versions do not enable sized deallocation by default.
12-
// UNSUPPORTED: clang-18
12+
// UNSUPPORTED: clang-17, clang-18
1313

1414
// UNSUPPORTED: sanitizer-new-delete, c++03, c++11
1515
// XFAIL: apple-clang

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// UNSUPPORTED: windows
1313

1414
// These compilers don't support constexpr `__builtin_signbit` yet.
15-
// UNSUPPORTED: clang-18, clang-19, apple-clang-15, apple-clang-16
15+
// UNSUPPORTED: clang-17, clang-18, clang-19, apple-clang-15, apple-clang-16
1616

1717
#include <cassert>
1818
#include <cmath>

0 commit comments

Comments
 (0)