[libc++][PSTL] Make the PSTL available by default under -fexperimental-library

This removes the need for a custom libc++ build to have a basic set of PSTL algorithms.

Reviewed By: ldionne, #libc

Spies: miyuki, libcxx-commits, arichardson

Differential Revision: https://reviews.llvm.org/D149624
This commit is contained in:
Nikolas Klauser 2023-05-05 08:41:13 -07:00
parent 42df495114
commit e7e3711885
45 changed files with 105 additions and 71 deletions

View File

@ -68,7 +68,6 @@ endif()
option(LIBCXX_ENABLE_FILESYSTEM "Build filesystem as part of the main libc++ library"
${ENABLE_FILESYSTEM_DEFAULT})
option(LIBCXX_INCLUDE_TESTS "Build the libc++ tests." ${LLVM_INCLUDE_TESTS})
option(LIBCXX_ENABLE_PARALLEL_ALGORITHMS "Enable the parallel algorithms library. This requires the PSTL to be available." OFF)
option(LIBCXX_ENABLE_DEBUG_MODE
"Whether to build libc++ with the debug mode enabled.
By default, this is turned off. Turning it on results in a different ABI (additional
@ -791,7 +790,6 @@ config_define_if(LIBCXX_HAS_WIN32_THREAD_API _LIBCPP_HAS_THREAD_API_WIN32)
config_define_if(LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL)
config_define_if(LIBCXX_HAS_MUSL_LIBC _LIBCPP_HAS_MUSL_LIBC)
config_define_if(LIBCXX_NO_VCRUNTIME _LIBCPP_NO_VCRUNTIME)
config_define_if(LIBCXX_ENABLE_PARALLEL_ALGORITHMS _LIBCPP_HAS_PARALLEL_ALGORITHMS)
config_define_if_not(LIBCXX_ENABLE_FILESYSTEM _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
config_define_if_not(LIBCXX_ENABLE_RANDOM_DEVICE _LIBCPP_HAS_NO_RANDOM_DEVICE)
config_define_if_not(LIBCXX_ENABLE_LOCALIZATION _LIBCPP_HAS_NO_LOCALIZATION)

View File

@ -1,4 +0,0 @@
# TODO: Remove this cache file once the PSTL is under `-fexperimental-library`
set(LIBCXX_TEST_PARAMS "std=c++17" CACHE STRING "")
set(LIBCXXABI_TEST_PARAMS "${LIBCXX_TEST_PARAMS}" CACHE STRING "")
set(LIBCXX_ENABLE_PARALLEL_ALGORITHMS ON CACHE BOOL "")

View File

@ -16,13 +16,14 @@
#include <__pstl/internal/unseq_backend_simd.h>
#include <__type_traits/enable_if.h>
#include <__type_traits/is_execution_policy.h>
#include <__type_traits/remove_cvref.h>
#include <__utility/terminate_on_exception.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
#if _LIBCPP_STD_VER >= 17
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
_LIBCPP_BEGIN_NAMESPACE_STD
@ -74,6 +75,6 @@ none_of(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP_STD_VER >= 17
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif // _LIBCPP___ALGORITHM_PSTL_ANY_ALL_NONE_OF_H

View File

@ -15,13 +15,14 @@
#include <__pstl/internal/parallel_impl.h>
#include <__pstl/internal/unseq_backend_simd.h>
#include <__type_traits/is_execution_policy.h>
#include <__type_traits/remove_cvref.h>
#include <__utility/terminate_on_exception.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
#if _LIBCPP_STD_VER >= 17
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
_LIBCPP_BEGIN_NAMESPACE_STD
@ -66,6 +67,6 @@ fill_n(_ExecutionPolicy&& __policy, _ForwardIterator __first, _SizeT __n, const
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP_STD_VER >= 17
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif // _LIBCPP___ALGORITHM_PSTL_FILL_H

View File

@ -15,12 +15,15 @@
#include <__pstl/internal/parallel_impl.h>
#include <__pstl/internal/unseq_backend_simd.h>
#include <__type_traits/is_execution_policy.h>
#include <__type_traits/remove_cvref.h>
#include <__utility/terminate_on_exception.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
_LIBCPP_BEGIN_NAMESPACE_STD
template <class _ExecutionPolicy,
@ -100,4 +103,6 @@ find_if_not(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardItera
_LIBCPP_END_NAMESPACE_STD
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif // _LIBCPP___ALGORITHM_PSTL_FIND_H

View File

@ -16,13 +16,14 @@
#include <__pstl/internal/parallel_backend.h>
#include <__pstl/internal/unseq_backend_simd.h>
#include <__type_traits/is_execution_policy.h>
#include <__type_traits/remove_cvref.h>
#include <__utility/terminate_on_exception.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
#if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) && _LIBCPP_STD_VER >= 17
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
_LIBCPP_BEGIN_NAMESPACE_STD
@ -68,6 +69,6 @@ for_each_n(_ExecutionPolicy&& __policy, _ForwardIterator __first, _Size __size,
_LIBCPP_END_NAMESPACE_STD
#endif // defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) && _LIBCPP_STD_VER >= 17
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif // _LIBCPP___ALGORITHM_PSTL_FOR_EACH_H

View File

@ -272,6 +272,7 @@
// easier to grep for target specific flags once the feature is complete.
# if !defined(_LIBCPP_ENABLE_EXPERIMENTAL) && !defined(_LIBCPP_BUILDING_LIBRARY)
# define _LIBCPP_HAS_NO_INCOMPLETE_FORMAT
# define _LIBCPP_HAS_NO_INCOMPLETE_PSTL
# endif
// Need to detect which libc we're using if we're on Linux.

View File

@ -25,7 +25,6 @@
#cmakedefine _LIBCPP_NO_VCRUNTIME
#cmakedefine _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION @_LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION@
#cmakedefine _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY
#cmakedefine _LIBCPP_HAS_PARALLEL_ALGORITHMS
#cmakedefine _LIBCPP_HAS_NO_RANDOM_DEVICE
#cmakedefine _LIBCPP_HAS_NO_LOCALIZATION
#cmakedefine _LIBCPP_HAS_NO_FSTREAM

View File

@ -16,6 +16,8 @@
#include "pstl_config.h"
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
namespace __pstl {
namespace execution {
inline namespace v1 {
@ -70,4 +72,6 @@ struct __parallel_tag;
} // namespace __pstl
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif /* _PSTL_EXECUTION_POLICY_DEFS_H */

View File

@ -11,10 +11,15 @@
#define _PSTL_EXECUTION_IMPL_H
#include <__iterator/iterator_traits.h>
#include <__type_traits/conditional.h>
#include <__type_traits/conjunction.h>
#include <__type_traits/is_base_of.h>
#include "execution_defs.h"
#include "pstl_config.h"
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
namespace __pstl {
namespace __internal {
@ -29,15 +34,15 @@ struct __serial_backend_tag {};
struct __tbb_backend_tag {};
struct __openmp_backend_tag {};
#if defined(_PSTL_PAR_BACKEND_TBB)
# if defined(_PSTL_PAR_BACKEND_TBB)
using __par_backend_tag = __tbb_backend_tag;
#elif defined(_PSTL_PAR_BACKEND_OPENMP)
# elif defined(_PSTL_PAR_BACKEND_OPENMP)
using __par_backend_tag = __openmp_backend_tag;
#elif defined(_PSTL_PAR_BACKEND_SERIAL)
# elif defined(_PSTL_PAR_BACKEND_SERIAL)
using __par_backend_tag = __serial_backend_tag;
#else
# error "A parallel backend must be specified";
#endif
# else
# error "A parallel backend must be specified";
# endif
template <class _IsVector>
struct __serial_tag {
@ -85,4 +90,6 @@ __select_backend(__pstl::execution::parallel_unsequenced_policy, _IteratorTypes&
} // namespace __internal
} // namespace __pstl
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif /* _PSTL_EXECUTION_IMPL_H */

View File

@ -14,10 +14,12 @@
#if defined(_PSTL_PAR_BACKEND_SERIAL)
# include "parallel_backend_serial.h"
# if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
namespace __pstl
{
namespace __par_backend = __serial_backend;
} // namespace __pstl
# endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#elif defined(_PSTL_PAR_BACKEND_TBB)
# include "parallel_backend_tbb.h"
namespace __pstl

View File

@ -16,6 +16,8 @@
#include "pstl_config.h"
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
namespace __pstl
{
namespace __serial_backend
@ -129,4 +131,6 @@ __parallel_invoke(__pstl::__internal::__serial_backend_tag, _ExecutionPolicy&&,
} // namespace __serial_backend
} // namespace __pstl
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif /* _PSTL_PARALLEL_BACKEND_SERIAL_H */

View File

@ -13,8 +13,11 @@
#include "pstl_config.h"
#include <__atomic/atomic.h>
#include <__atomic/memory_order.h>
#include <__pstl/internal/parallel_backend.h>
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
namespace __pstl
{
namespace __internal
@ -81,4 +84,6 @@ bool __parallel_or(_BackendTag __tag, _ExecutionPolicy&& __exec, _Index __first,
} // namespace __internal
} // namespace __pstl
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif /* _PSTL_PARALLEL_IMPL_H */

View File

@ -11,7 +11,10 @@
#define _PSTL_UNSEQ_BACKEND_SIMD_H
#include <__functional/operations.h>
#include <__type_traits/is_arithmetic.h>
#include <__utility/pair.h>
#include <cstddef>
#include <cstdint>
#include "pstl_config.h"
#include "utils.h"
@ -19,6 +22,8 @@
// This header defines the minimum set of vector routines required
// to support parallel STL.
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
namespace __pstl
{
namespace __unseq_backend
@ -806,4 +811,6 @@ __simd_remove_if(_RandomAccessIterator __first, _DifferenceType __n, _UnaryPredi
} // namespace __unseq_backend
} // namespace __pstl
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif /* _PSTL_UNSEQ_BACKEND_SIMD_H */

View File

@ -15,6 +15,8 @@
#include <__utility/forward.h>
#include <new>
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
namespace __pstl {
namespace __internal {
@ -137,4 +139,6 @@ __cmp_iterators_by_values(_ForwardIterator __a, _ForwardIterator __b, _Compare _
} // namespace __internal
} // namespace __pstl
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif /* _PSTL_UTILS_H */

View File

@ -39,7 +39,7 @@ inline constexpr bool __is_parallel_execution_policy_v = __is_parallel_execution
// Removes the "parallel" part of an execution policy.
// For example, turns par_unseq into unseq, and par into seq.
template <class _ExecutionPolicy>
const auto& __remove_parallel_policy(_ExecutionPolicy&&);
_LIBCPP_HIDE_FROM_ABI const auto& __remove_parallel_policy(_ExecutionPolicy&&);
_LIBCPP_END_NAMESPACE_STD

View File

@ -1788,6 +1788,10 @@ template <class BidirectionalIterator, class Compare>
#include <__algorithm/partition_point.h>
#include <__algorithm/pop_heap.h>
#include <__algorithm/prev_permutation.h>
#include <__algorithm/pstl_any_all_none_of.h>
#include <__algorithm/pstl_fill.h>
#include <__algorithm/pstl_find.h>
#include <__algorithm/pstl_for_each.h>
#include <__algorithm/push_heap.h>
#include <__algorithm/ranges_adjacent_find.h>
#include <__algorithm/ranges_all_of.h>
@ -1908,13 +1912,6 @@ template <class BidirectionalIterator, class Compare>
#include <__algorithm/unwrap_iter.h>
#include <__algorithm/upper_bound.h>
#ifdef _LIBCPP_HAS_PARALLEL_ALGORITHMS
# include <__algorithm/pstl_any_all_none_of.h>
# include <__algorithm/pstl_fill.h>
# include <__algorithm/pstl_find.h>
# include <__algorithm/pstl_for_each.h>
#endif
// standard-mandated includes
// [algorithm.syn]

View File

@ -43,7 +43,7 @@ namespace std {
# pragma GCC system_header
#endif
#if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) && _LIBCPP_STD_VER >= 17
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
_LIBCPP_BEGIN_NAMESPACE_STD
@ -135,7 +135,7 @@ template <class _Tp>
struct is_execution_policy : bool_constant<is_execution_policy_v<_Tp>> {};
template <class _ExecutionPolicy>
const auto& __remove_parallel_policy(_ExecutionPolicy&&) {
_LIBCPP_HIDE_FROM_ABI const auto& __remove_parallel_policy(_ExecutionPolicy&&) {
using _ExecPol = __remove_cvref_t<_ExecutionPolicy>;
if constexpr (is_same_v<_ExecPol, execution::parallel_policy>) {
return execution::seq;
@ -146,6 +146,6 @@ const auto& __remove_parallel_policy(_ExecutionPolicy&&) {
_LIBCPP_END_NAMESPACE_STD
#endif // defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) && _LIBCPP_STD_VER >= 17
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
#endif // _LIBCPP_EXECUTION

View File

@ -635,7 +635,11 @@ module std [system] {
private header "__atomic/aliases.h"
export atomic
}
module atomic { private header "__atomic/atomic.h" }
module atomic {
private header "__atomic/atomic.h"
export atomic_base
}
module atomic_base { private header "__atomic/atomic_base.h" }
module atomic_flag { private header "__atomic/atomic_flag.h" }
module atomic_init { private header "__atomic/atomic_init.h" }

View File

@ -11,12 +11,13 @@
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_NODISCARD_EXT
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// UNSUPPORTED: c++03, c++11, c++14
#include <algorithm>
#include <execution>
#include <iterator>
void test() {
int a[] = {1};

View File

@ -8,12 +8,13 @@
// Check that PSTL algorithms are marked [[nodiscard]] as a conforming extension
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// UNSUPPORTED: c++03, c++11, c++14
#include <algorithm>
#include <execution>
#include <iterator>
void test() {
int a[] = {1};

View File

@ -32,9 +32,6 @@
// this test instead.
// UNSUPPORTED: transitive-includes-disabled
// FIXME: This should pass with the PSTL enabled
// XFAIL: with-pstl
// Prevent <ext/hash_map> from generating deprecated warnings for this test.
#if defined(__DEPRECATED)
# undef __DEPRECATED

View File

@ -6,12 +6,14 @@ algorithm cstddef
algorithm cstdint
algorithm cstdlib
algorithm cstring
algorithm ctime
algorithm initializer_list
algorithm iosfwd
algorithm iterator
algorithm limits
algorithm memory
algorithm new
algorithm ratio
algorithm stdexcept
algorithm type_traits
algorithm utility

1 algorithm atomic
6 algorithm cstdint
7 algorithm cstdlib
8 algorithm cstring
9 algorithm ctime
10 algorithm initializer_list
11 algorithm iosfwd
12 algorithm iterator
13 algorithm limits
14 algorithm memory
15 algorithm new
16 algorithm ratio
17 algorithm stdexcept
18 algorithm type_traits
19 algorithm utility

View File

@ -6,12 +6,14 @@ algorithm cstddef
algorithm cstdint
algorithm cstdlib
algorithm cstring
algorithm ctime
algorithm initializer_list
algorithm iosfwd
algorithm iterator
algorithm limits
algorithm memory
algorithm new
algorithm ratio
algorithm stdexcept
algorithm type_traits
algorithm utility

1 algorithm atomic
6 algorithm cstdint
7 algorithm cstdlib
8 algorithm cstring
9 algorithm ctime
10 algorithm initializer_list
11 algorithm iosfwd
12 algorithm iterator
13 algorithm limits
14 algorithm memory
15 algorithm new
16 algorithm ratio
17 algorithm stdexcept
18 algorithm type_traits
19 algorithm utility

View File

@ -6,12 +6,14 @@ algorithm cstddef
algorithm cstdint
algorithm cstdlib
algorithm cstring
algorithm ctime
algorithm initializer_list
algorithm iosfwd
algorithm iterator
algorithm limits
algorithm memory
algorithm new
algorithm ratio
algorithm stdexcept
algorithm type_traits
algorithm utility

1 algorithm atomic
6 algorithm cstdint
7 algorithm cstdlib
8 algorithm cstring
9 algorithm ctime
10 algorithm initializer_list
11 algorithm iosfwd
12 algorithm iterator
13 algorithm limits
14 algorithm memory
15 algorithm new
16 algorithm ratio
17 algorithm stdexcept
18 algorithm type_traits
19 algorithm utility

View File

@ -6,12 +6,14 @@ algorithm cstddef
algorithm cstdint
algorithm cstdlib
algorithm cstring
algorithm ctime
algorithm initializer_list
algorithm iosfwd
algorithm iterator
algorithm limits
algorithm memory
algorithm new
algorithm ratio
algorithm stdexcept
algorithm type_traits
algorithm utility

1 algorithm atomic
6 algorithm cstdint
7 algorithm cstdlib
8 algorithm cstring
9 algorithm ctime
10 algorithm initializer_list
11 algorithm iosfwd
12 algorithm iterator
13 algorithm limits
14 algorithm memory
15 algorithm new
16 algorithm ratio
17 algorithm stdexcept
18 algorithm type_traits
19 algorithm utility

View File

@ -6,12 +6,14 @@ algorithm cstddef
algorithm cstdint
algorithm cstdlib
algorithm cstring
algorithm ctime
algorithm initializer_list
algorithm iosfwd
algorithm iterator
algorithm limits
algorithm memory
algorithm new
algorithm ratio
algorithm stdexcept
algorithm type_traits
algorithm utility

1 algorithm atomic
6 algorithm cstdint
7 algorithm cstdlib
8 algorithm cstring
9 algorithm ctime
10 algorithm initializer_list
11 algorithm iosfwd
12 algorithm iterator
13 algorithm limits
14 algorithm memory
15 algorithm new
16 algorithm ratio
17 algorithm stdexcept
18 algorithm type_traits
19 algorithm utility

View File

@ -2,10 +2,12 @@ algorithm climits
algorithm cstddef
algorithm cstdint
algorithm cstring
algorithm ctime
algorithm initializer_list
algorithm iosfwd
algorithm limits
algorithm new
algorithm ratio
algorithm version
any cstddef
any cstdint

1 algorithm climits
2 algorithm cstddef
3 algorithm cstdint
4 algorithm cstring
5 algorithm ctime
6 algorithm initializer_list
7 algorithm iosfwd
8 algorithm limits
9 algorithm new
10 algorithm ratio
11 algorithm version
12 any cstddef
13 any cstdint

View File

@ -10,7 +10,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
#include <execution>
#include <type_traits>

View File

@ -10,7 +10,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// template<class ExecutionPolicy, class ForwardIterator, class T>
// void fill(ExecutionPolicy&& exec,
@ -61,9 +61,11 @@ struct Test {
}
};
#ifndef TEST_HAS_NO_EXCEPTIONS
struct ThrowOnCopy {
ThrowOnCopy& operator=(const ThrowOnCopy&) { throw int{}; }
};
#endif
int main(int, char**) {
types::for_each(types::forward_iterator_list<int*>{}, TestIteratorWithPolicies<Test>{});

View File

@ -10,7 +10,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// template<class ExecutionPolicy, class ForwardIterator, class Size, class T>
// ForwardIterator fill_n(ExecutionPolicy&& exec,
@ -61,9 +61,11 @@ struct Test {
}
};
#ifndef TEST_HAS_NO_EXCEPTIONS
struct ThrowOnCopy {
ThrowOnCopy& operator=(const ThrowOnCopy&) { throw int{}; }
};
#endif
int main(int, char**) {
types::for_each(types::forward_iterator_list<int*>{}, TestIteratorWithPolicies<Test>{});

View File

@ -8,7 +8,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// <algorithm>

View File

@ -8,7 +8,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// <algorithm>

View File

@ -8,7 +8,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// <algorithm>
@ -63,7 +63,9 @@ struct Test {
struct ThrowOnCompare {};
#ifndef TEST_HAS_NO_EXCEPTIONS
bool operator==(ThrowOnCompare, ThrowOnCompare) { throw int{}; }
#endif
int main(int, char**) {
types::for_each(types::forward_iterator_list<int*>{}, TestIteratorWithPolicies<Test>{});

View File

@ -8,7 +8,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// <algorithm>

View File

@ -8,7 +8,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// <algorithm>

View File

@ -8,7 +8,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// <algorithm>

View File

@ -8,7 +8,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// <algorithm>

View File

@ -6,7 +6,9 @@
//
//===----------------------------------------------------------------------===//
// REQUIRES: with-pstl
// UNSUPPORTED: c++03, c++11, c++14
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
// <algorithm>

View File

@ -11,7 +11,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
#include <execution>

View File

@ -18,7 +18,7 @@
// UNSUPPORTED: c++03, c++11, c++14
// REQUIRES: with-pstl
// UNSUPPORTED: libcpp-has-no-incomplete-pstl
#include <execution>
#include <type_traits>

View File

@ -465,22 +465,6 @@ steps:
limit: 2
timeout_in_minutes: 120
- label: "With PSTL support"
command: "libcxx/utils/ci/run-buildbot with-pstl"
artifact_paths:
- "**/test-results.xml"
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
agents:
queue: "libcxx-builders"
os: "linux"
retry:
automatic:
- exit_status: -1 # Agent was lost
limit: 2
timeout_in_minutes: 120
- label: "With LLVM's libunwind"
command: "libcxx/utils/ci/run-buildbot generic-with_llvm_unwinder"
artifact_paths:

View File

@ -448,11 +448,6 @@ generic-abi-unstable)
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-abi-unstable.cmake"
check-runtimes
;;
with-pstl)
clean
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/With-pstl.cmake"
check-runtimes
;;
apple-system)
clean

View File

@ -209,7 +209,6 @@ macros = {
'_LIBCPP_HAS_NO_WIDE_CHARACTERS': 'no-wide-characters',
'_LIBCPP_HAS_NO_UNICODE': 'libcpp-has-no-unicode',
'_LIBCPP_ENABLE_DEBUG_MODE': 'libcpp-has-debug-mode',
'_LIBCPP_HAS_PARALLEL_ALGORITHMS': 'with-pstl',
}
for macro, feature in macros.items():
DEFAULT_FEATURES.append(

View File

@ -184,6 +184,7 @@ DEFAULT_PARAMETERS = [
AddCompileFlag('-D_LIBCPP_ENABLE_EXPERIMENTAL'),
] if experimental else [
AddFeature('libcpp-has-no-incomplete-format'),
AddFeature('libcpp-has-no-incomplete-pstl'),
]),
Parameter(name='long_tests', choices=[True, False], type=bool, default=True,