-
Notifications
You must be signed in to change notification settings - Fork 14.4k
[libc++] Remove the CI job testing Clang 15 #66406
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-libcxxabi @llvm/pr-subscribers-libcxx ChangesSince LLVM 17 has been branched and is on the verge of being released, we can drop the CI job that tests against Clang 15. I think the number of cherry-picks to `release/17.x` will be a lot smaller now, so keeping a Clang 15 job around for that purpose seems unnecessary.As a fly-by, this patch also removes some Clang 15 workarounds and test suite annotations as we usually do. It also removes some slightly older gcc test suite annotations that were missed.Full diff: https://github.com/llvm/llvm-project/pull/66406.diff 18 Files Affected:
diff --git a/libcxx/include/__ranges/take_while_view.h b/libcxx/include/__ranges/take_while_view.h index b4bdd1865de1c52..a6f7f80ca76bfbe 100644 --- a/libcxx/include/__ranges/take_while_view.h +++ b/libcxx/include/__ranges/take_while_view.h @@ -41,18 +41,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { -// The spec uses the unnamed requirement inside the `begin` and `end` member functions: -// constexpr auto begin() const -// requires range<const V> && indirect_unary_predicate<const Pred, iterator_t<const V>> -// However, due to a clang-14 and clang-15 bug, the above produces a hard error when `const V` is not a range. -// The workaround is to create a named concept and use the concept instead. -// As of take_while_view is implemented, the clang-trunk has already fixed the bug. -// It is OK to remove the workaround once our CI no longer uses clang-14, clang-15 based compilers, -// because we don't actually expect a lot of vendors to ship a new libc++ with an old clang. -template <class _View, class _Pred> -concept __take_while_const_is_range = - range<const _View> && indirect_unary_predicate<const _Pred, iterator_t<const _View>>; - template <view _View, class _Pred> requires input_range<_View> && is_object_v<_Pred> && indirect_unary_predicate<const _Pred, iterator_t<_View>> class take_while_view : public view_interface<take_while_view<_View, _Pred>> { @@ -87,7 +75,7 @@ class take_while_view : public view_interface<take_while_view<_View, _Pred>> { } _LIBCPP_HIDE_FROM_ABI constexpr auto begin() const - requires __take_while_const_is_range<_View, _Pred> + requires range<const _View> && indirect_unary_predicate<const _Pred, iterator_t<const _View>> { return ranges::begin(__base_); } @@ -99,7 +87,7 @@ class take_while_view : public view_interface<take_while_view<_View, _Pred>> { } _LIBCPP_HIDE_FROM_ABI constexpr auto end() const - requires __take_while_const_is_range<_View, _Pred> + requires range<const _View> && indirect_unary_predicate<const _Pred, iterator_t<const _View>> { return __sentinel</*_Const=*/true>(ranges::end(__base_), std::addressof(*__pred_)); } diff --git a/libcxx/include/__ranges/to.h b/libcxx/include/__ranges/to.h index 95c300bfa6f204c..c87a1bb85a89394 100644 --- a/libcxx/include/__ranges/to.h +++ b/libcxx/include/__ranges/to.h @@ -44,10 +44,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { -// TODO(clang-15): in the Standard, it's a `constexpr bool` variable, not a concept, but constexpr variables don't -// short-circuit properly on Clang 15 (fixed in later versions), so use a concept as a workaround. template <class _Container> -concept __reservable_container = sized_range<_Container> && requires(_Container& __c, range_size_t<_Container> __n) { +constexpr bool __reservable_container = sized_range<_Container> && requires(_Container& __c, range_size_t<_Container> __n) { __c.reserve(__n); { __c.capacity() } -> same_as<decltype(__n)>; { __c.max_size() } -> same_as<decltype(__n)>; diff --git a/libcxx/test/libcxx/experimental/fexperimental-library.compile.pass.cpp b/libcxx/test/libcxx/experimental/fexperimental-library.compile.pass.cpp index 4dcbac0fb74b472..59f4541410a8360 100644 --- a/libcxx/test/libcxx/experimental/fexperimental-library.compile.pass.cpp +++ b/libcxx/test/libcxx/experimental/fexperimental-library.compile.pass.cpp @@ -15,10 +15,6 @@ // AppleClang does not support the -fexperimental-library flag yet // UNSUPPORTED: apple-clang-14.0 -// Clang on AIX currently pretends that it is Clang 15, even though it is not (as of writing -// this, LLVM 15 hasn't even been branched yet). -// UNSUPPORTED: clang-15 && buildhost=aix - // ADDITIONAL_COMPILE_FLAGS: -fexperimental-library #include <version> diff --git a/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp b/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp index 12851a5baee7f5f..394a3369e036ed8 100644 --- a/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp +++ b/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp @@ -12,10 +12,10 @@ // UNSUPPORTED: c++03 // TODO: Investigate these failures which break the CI. -// UNSUPPORTED: clang-15, clang-16, clang-17, clang-18 +// UNSUPPORTED: clang-16, clang-17, clang-18 -// TODO: Investigate this failure on GCC 12 (in Ubuntu Jammy) -// UNSUPPORTED: gcc-12, gcc-13 +// TODO: Investigate this failure on GCC 13 (in Ubuntu Jammy) +// UNSUPPORTED: gcc-13 // RUN: %{cxx} %{flags} %s -o %t.exe %{compile_flags} -g %{link_flags} // Ensure locale-independence for unicode tests. diff --git a/libcxx/test/libcxx/language.support/support.dynamic/libcpp_deallocate.sh.cpp b/libcxx/test/libcxx/language.support/support.dynamic/libcpp_deallocate.sh.cpp index 12c73e3e3b32c09..cd4e6f239db47db 100644 --- a/libcxx/test/libcxx/language.support/support.dynamic/libcpp_deallocate.sh.cpp +++ b/libcxx/test/libcxx/language.support/support.dynamic/libcpp_deallocate.sh.cpp @@ -19,8 +19,7 @@ // XFAIL: sanitizer-new-delete && !hwasan -// It fails with clang-14 or clang-16, but passes with clang-15. -// UNSUPPORTED: ubsan +// UNSUPPORTED: clang-16 && ubsan // GCC doesn't support the aligned-allocation flags. // XFAIL: gcc diff --git a/libcxx/test/std/algorithms/robust_against_adl.compile.pass.cpp b/libcxx/test/std/algorithms/robust_against_adl.compile.pass.cpp index 77c88873073c914..6e6cddfcee2bbf5 100644 --- a/libcxx/test/std/algorithms/robust_against_adl.compile.pass.cpp +++ b/libcxx/test/std/algorithms/robust_against_adl.compile.pass.cpp @@ -11,7 +11,7 @@ // https://buildkite.com/llvm-project/libcxx-ci/builds/15823#0184fc0b-d56b-4774-9e1d-35fe24e09e37 // It seems like the CI gcc version is buggy. I can't reproduce the failure on my system or on // godbolt (https://godbolt.org/z/rsPv8e8fn). -// UNSUPPORTED: gcc-12, gcc-13 +// UNSUPPORTED: gcc-13 #include <algorithm> #include <cstddef> diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/index_operator.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/index_operator.pass.cpp index 5284194632d0f42..9e622d1c01fc007 100644 --- a/libcxx/test/std/containers/views/mdspan/mdspan/index_operator.pass.cpp +++ b/libcxx/test/std/containers/views/mdspan/mdspan/index_operator.pass.cpp @@ -38,7 +38,7 @@ #include "../ConvertibleToIntegral.h" #include "CustomTestLayouts.h" -// Clang 15 and 16 do not support argument packs as input to operator [] +// Clang 16 does not support argument packs as input to operator [] #if defined(__clang_major__) && __clang_major__ < 17 template <class MDS> constexpr auto& access(MDS mds) { diff --git a/libcxx/test/std/language.support/support.srcloc/general.pass.cpp b/libcxx/test/std/language.support/support.srcloc/general.pass.cpp index 761cd66dc87a465..b80694cd629f456 100644 --- a/libcxx/test/std/language.support/support.srcloc/general.pass.cpp +++ b/libcxx/test/std/language.support/support.srcloc/general.pass.cpp @@ -7,7 +7,6 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14, c++17 -// UNSUPPORTED: clang-15 // UNSUPPORTED: apple-clang-14 #include <source_location> diff --git a/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp index 7059ce5370cbed3..8e86001756363ae 100644 --- a/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp +++ b/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// // This test is hitting Clang bugs with LSV in older versions of Clang. -// UNSUPPORTED: clang-modules-build && (clang-15 || apple-clang-14) +// UNSUPPORTED: clang-modules-build && apple-clang-14 // UNSUPPORTED: c++03, c++11, c++14, c++17 diff --git a/libcxx/test/std/thread/futures/futures.task/futures.task.members/ctad.static.compile.pass.cpp b/libcxx/test/std/thread/futures/futures.task/futures.task.members/ctad.static.compile.pass.cpp index f982f22d308b843..29771b92a7c65d2 100644 --- a/libcxx/test/std/thread/futures/futures.task/futures.task.members/ctad.static.compile.pass.cpp +++ b/libcxx/test/std/thread/futures/futures.task/futures.task.members/ctad.static.compile.pass.cpp @@ -8,7 +8,7 @@ // UNSUPPORTED: no-threads // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 -// XFAIL: clang-14, clang-15, gcc-12, apple-clang-14 +// XFAIL: apple-clang-14 // checks that CTAD for std::packaged_task works properly with static operator() overloads diff --git a/libcxx/test/std/utilities/expected/expected.expected/swap/free.swap.pass.cpp b/libcxx/test/std/utilities/expected/expected.expected/swap/free.swap.pass.cpp index 2a004b0cd747496..1da87cda088596e 100644 --- a/libcxx/test/std/utilities/expected/expected.expected/swap/free.swap.pass.cpp +++ b/libcxx/test/std/utilities/expected/expected.expected/swap/free.swap.pass.cpp @@ -7,7 +7,7 @@ // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 // Older Clangs do not support the C++20 feature to constrain destructors -// XFAIL: clang-15, apple-clang-14 +// XFAIL: apple-clang-14 // friend constexpr void swap(expected& x, expected& y) noexcept(noexcept(x.swap(y))); diff --git a/libcxx/test/std/utilities/expected/expected.void/swap/free.swap.pass.cpp b/libcxx/test/std/utilities/expected/expected.void/swap/free.swap.pass.cpp index b293fe27c8d80bb..b7316cd062c5669 100644 --- a/libcxx/test/std/utilities/expected/expected.void/swap/free.swap.pass.cpp +++ b/libcxx/test/std/utilities/expected/expected.void/swap/free.swap.pass.cpp @@ -7,7 +7,7 @@ // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 // Older Clangs do not support the C++20 feature to constrain destructors -// XFAIL: clang-15, apple-clang-14 +// XFAIL: apple-clang-14 // friend constexpr void swap(expected& x, expected& y) noexcept(noexcept(swap(x,y))); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp index 84e2c8ab1af0cc7..7c1e1c076bfbfd2 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp @@ -7,7 +7,7 @@ // UNSUPPORTED: c++03, c++11, c++14, c++17 // TODO FMT __builtin_memcpy isn't constexpr in GCC -// UNSUPPORTED: gcc-12, gcc-13 +// UNSUPPORTED: gcc-13 // <format> diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/ctad.static.compile.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/ctad.static.compile.pass.cpp index 790e89b0e57dd03..79695e99201d604 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/ctad.static.compile.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/ctad.static.compile.pass.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 -// XFAIL: clang-15, gcc-12, apple-clang-14 +// XFAIL: apple-clang-14 // checks that CTAD for std::function works properly with static operator() overloads diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp index c1d3659e81f005d..d2b555149768570 100644 --- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp +++ b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp @@ -6,9 +6,6 @@ // //===----------------------------------------------------------------------===// -// Triggers a Clang assertion: llvm.org/PR45879 -// UNSUPPORTED: clang-15 - // <tuple> // template <class... Types> class tuple; diff --git a/libcxx/test/std/utilities/utility/pairs/pairs.pair/assign.pair_like_rv_const.pass.cpp b/libcxx/test/std/utilities/utility/pairs/pairs.pair/assign.pair_like_rv_const.pass.cpp index 1ebcb7ac9e2fe04..f914696d11b25c2 100644 --- a/libcxx/test/std/utilities/utility/pairs/pairs.pair/assign.pair_like_rv_const.pass.cpp +++ b/libcxx/test/std/utilities/utility/pairs/pairs.pair/assign.pair_like_rv_const.pass.cpp @@ -8,9 +8,6 @@ // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 -// GCC 12 chokes on using a mutable variable inside a constexpr context -// XFAIL: gcc-12 - // <utility> // template <class T1, class T2> struct pair diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml index 90bb343f7c7ad03..46fc8f8d160735e 100644 --- a/libcxx/utils/ci/buildkite-pipeline.yml +++ b/libcxx/utils/ci/buildkite-pipeline.yml @@ -289,25 +289,6 @@ steps: limit: 2 timeout_in_minutes: 120 - - label: "Clang 15" - command: "libcxx/utils/ci/run-buildbot generic-cxx23" - artifact_paths: - - "**/test-results.xml" - - "**/*.abilist" - env: - CC: "clang-15" - CXX: "clang++-15" - ENABLE_CLANG_TIDY: "On" - ENABLE_STD_MODULES: "Off" - agents: - queue: "libcxx-builders" - os: "linux" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - timeout_in_minutes: 120 - - label: "Clang 16" command: "libcxx/utils/ci/run-buildbot generic-cxx23" artifact_paths: diff --git a/libcxxabi/test/catch_member_function_pointer_02.pass.cpp b/libcxxabi/test/catch_member_function_pointer_02.pass.cpp index 667447db1e68a9d..c4a07c1297dd714 100644 --- a/libcxxabi/test/catch_member_function_pointer_02.pass.cpp +++ b/libcxxabi/test/catch_member_function_pointer_02.pass.cpp @@ -15,7 +15,7 @@ // GCC supports noexcept function types but this test still fails. // This is likely a bug in their implementation. Investigation needed. -// XFAIL: gcc-11, gcc-12, gcc-13 +// XFAIL: gcc-13 #include <cassert> |
Note: I need to remember to ping https://reviews.llvm.org/D155562 and https://reviews.llvm.org/D158214 once this lands. |
644ba5d
to
dfb6bd5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this patch and the additional cleanups!
A small note regarding the motivation. Our documentation states we should do this cleanup post release and not after branching. Having Clang 15 tested in main during the release process gave me quite a bit of confidence patches proposed for backporting didn't cause issues with Clang 15 in the release branch.
Based on our current state I don't mind landing this a few days before the official release.
As a side note would now also be a good time to remove the libc++ 17 release notes from main.
I agree 100%, and normally I wouldn't mind waiting just a bit longer. However in this case this is blocking a couple other reviews in Phabricator so I am keen to get it done so we can close these Phabricator reviews! |
dfb6bd5
to
31d945d
Compare
Once Xcode 15 is released (not just as a RC), I'll update the macOS bots and bump the minimum AppleClang version as well. I think that is required for this patch to land. |
Ok, this was much more complicated than I anticipated because updating the macOS CI builders to Xcode 15 required a bunch of changes, but we should be near now. #67065 is bumping the AppleClang version, and then I'll rebase this patch. |
Since LLVM 17 has been branched and is on the verge of being released, we can drop the CI job that tests against Clang 15. I think the number of cherry-picks to `release/17.x` will be a lot smaller now, so keeping a Clang 15 job around for that purpose seems unnecessary. As a fly-by, this patch also removes some Clang 15 workarounds and test suite annotations as we usually do. It also removes some slightly older gcc test suite annotations that were missed.
31d945d
to
e39d56c
Compare
Since LLVM 17 has been branched and is on the verge of being released, we can drop the CI job that tests against Clang 15. I think the number of cherry-picks to
release/17.x
will be a lot smaller now, so keeping a Clang 15 job around for that purpose seems unnecessary.As a fly-by, this patch also removes some Clang 15 workarounds and test suite annotations as we usually do. It also removes some slightly older gcc test suite annotations that were missed.