[libc++] Remove the CI job testing Clang 15 (#66406)

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.
This commit is contained in:
Louis Dionne 2023-09-25 17:55:59 -04:00 committed by GitHub
parent ea7157ff4f
commit 580d26ae46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 12 additions and 61 deletions

View File

@ -116,7 +116,7 @@ velocity, libc++ drops support for older compilers as newer ones are released.
============ =============== ========================== =====================
Compiler Versions Restrictions Support policy
============ =============== ========================== =====================
Clang 15, 16, 17-git latest two stable releases per `LLVM's release page <https://releases.llvm.org>`_ and the development version
Clang 16, 17, 18-git latest two stable releases per `LLVM's release page <https://releases.llvm.org>`_ and the development version
AppleClang 15 latest stable release per `Xcode's release page <https://developer.apple.com/documentation/xcode-release-notes>`_
Open XL 17.1 (AIX) latest stable release per `Open XL's documentation page <https://www.ibm.com/docs/en/openxl-c-and-cpp-aix>`_
GCC 12 In C++11 or later only latest stable release per `GCC's release page <https://gcc.gnu.org/releases.html>`_

View File

@ -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 @@ public:
}
_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 @@ public:
}
_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_));
}

View File

@ -44,10 +44,9 @@ _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)>;

View File

@ -12,10 +12,6 @@
// GCC does not support the -fexperimental-library flag
// UNSUPPORTED: gcc
// 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>

View File

@ -12,7 +12,7 @@
// 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 13 (in Ubuntu Jammy)
// UNSUPPORTED: gcc-13

View File

@ -19,7 +19,7 @@
// XFAIL: sanitizer-new-delete && !hwasan
// It fails with clang-14 or clang-16, but passes with clang-15.
// TODO: Investigate this failure
// UNSUPPORTED: ubsan
// GCC doesn't support the aligned-allocation flags.

View File

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

View File

@ -7,7 +7,6 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14, c++17
// UNSUPPORTED: clang-15
#include <source_location>

View File

@ -6,9 +6,6 @@
//
//===----------------------------------------------------------------------===//
// This test is hitting Clang bugs with LSV in older versions of Clang.
// UNSUPPORTED: clang-modules-build && clang-15
// UNSUPPORTED: c++03, c++11, c++14, c++17
// constexpr iterator_t<V> operator->() const

View File

@ -8,7 +8,6 @@
// UNSUPPORTED: no-threads
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// XFAIL: clang-15
// checks that CTAD for std::packaged_task works properly with static operator() overloads

View File

@ -6,8 +6,6 @@
//===----------------------------------------------------------------------===//
// 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
// friend constexpr void swap(expected& x, expected& y) noexcept(noexcept(x.swap(y)));

View File

@ -6,8 +6,6 @@
//===----------------------------------------------------------------------===//
// 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
// friend constexpr void swap(expected& x, expected& y) noexcept(noexcept(swap(x,y)));

View File

@ -7,7 +7,6 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// XFAIL: clang-15
// checks that CTAD for std::function works properly with static operator() overloads

View File

@ -6,9 +6,6 @@
//
//===----------------------------------------------------------------------===//
// Triggers a Clang assertion: llvm.org/PR45879
// UNSUPPORTED: clang-15
// <tuple>
// template <class... Types> class tuple;

View File

@ -271,25 +271,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: