summaryrefslogtreecommitdiff
path: root/libcxx
diff options
context:
space:
mode:
authorNikolas Klauser <n_klauser@apple.com>2023-05-02 09:45:37 -0700
committerNikolas Klauser <n_klauser@apple.com>2023-05-03 14:29:48 -0700
commit91121ea6dc123733100d54622c9e89b1f6e89126 (patch)
tree9d25a2f5492364c23148731f495632baa41473ed /libcxx
parentee58f49a786d5d0823eb840df87eafc6aa01f7d1 (diff)
downloadllvm-91121ea6dc123733100d54622c9e89b1f6e89126.tar.gz
[libc++][PSTL] Reduce the amount of transitive includes
Reviewed By: ldionne, #libc Spies: libcxx-commits, miyuki Differential Revision: https://reviews.llvm.org/D149599
Diffstat (limited to 'libcxx')
-rw-r--r--libcxx/include/__algorithm/pstl_any_all_none_of.h6
-rw-r--r--libcxx/include/__algorithm/pstl_find.h5
-rw-r--r--libcxx/include/__iterator/iterator_traits.h3
-rw-r--r--libcxx/include/__memory/allocator.h1
-rw-r--r--libcxx/include/__pstl/internal/execution_defs.h4
-rw-r--r--libcxx/include/__pstl/internal/execution_impl.h3
-rw-r--r--libcxx/include/__pstl/internal/parallel_backend_utils.h5
-rw-r--r--libcxx/include/__pstl/internal/parallel_impl.h4
-rw-r--r--libcxx/include/__pstl/internal/unseq_backend_simd.h2
-rw-r--r--libcxx/include/__pstl/internal/utils.h4
-rw-r--r--libcxx/include/__utility/terminate_on_exception.h2
-rw-r--r--libcxx/include/any1
-rw-r--r--libcxx/include/valarray1
-rw-r--r--libcxx/test/libcxx/transitive_includes/cxx2b.csv2
-rw-r--r--libcxx/test/support/test_execution_policies.h1
15 files changed, 25 insertions, 19 deletions
diff --git a/libcxx/include/__algorithm/pstl_any_all_none_of.h b/libcxx/include/__algorithm/pstl_any_all_none_of.h
index e6446c26f7e6..6c01634eafdf 100644
--- a/libcxx/include/__algorithm/pstl_any_all_none_of.h
+++ b/libcxx/include/__algorithm/pstl_any_all_none_of.h
@@ -11,7 +11,7 @@
#include <__algorithm/any_of.h>
#include <__config>
-#include <__functional/not_fn.h>
+#include <__iterator/iterator_traits.h>
#include <__pstl/internal/parallel_impl.h>
#include <__pstl/internal/unseq_backend_simd.h>
#include <__type_traits/enable_if.h>
@@ -58,7 +58,9 @@ template <class _ExecutionPolicy,
enable_if_t<is_execution_policy_v<__remove_cvref_t<_ExecutionPolicy>>, int> = 0>
_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI bool
all_of(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator __last, _Pred __pred) {
- return !std::any_of(__policy, __first, __last, std::not_fn(__pred));
+ return !std::any_of(__policy, __first, __last, [&](__iter_reference<_ForwardIterator> __value) {
+ return !__pred(__value);
+ });
}
template <class _ExecutionPolicy,
diff --git a/libcxx/include/__algorithm/pstl_find.h b/libcxx/include/__algorithm/pstl_find.h
index d3c886d2c4bc..8edb14bc59f7 100644
--- a/libcxx/include/__algorithm/pstl_find.h
+++ b/libcxx/include/__algorithm/pstl_find.h
@@ -12,7 +12,6 @@
#include <__algorithm/comp.h>
#include <__algorithm/find.h>
#include <__config>
-#include <__functional/not_fn.h>
#include <__pstl/internal/parallel_impl.h>
#include <__pstl/internal/unseq_backend_simd.h>
#include <__type_traits/is_execution_policy.h>
@@ -94,7 +93,9 @@ template <class _ExecutionPolicy,
enable_if_t<is_execution_policy_v<__remove_cvref_t<_ExecutionPolicy>>, int> = 0>
_LIBCPP_HIDE_FROM_ABI _ForwardIterator
find_if_not(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) {
- return std::find_if(__policy, __first, __last, std::not_fn(std::move(__pred)));
+ return std::find_if(__policy, __first, __last, [&](__iter_reference<_ForwardIterator> __value) {
+ return !__pred(__value);
+ });
}
_LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__iterator/iterator_traits.h b/libcxx/include/__iterator/iterator_traits.h
index 0318e4b62591..f066b962e7a5 100644
--- a/libcxx/include/__iterator/iterator_traits.h
+++ b/libcxx/include/__iterator/iterator_traits.h
@@ -534,6 +534,9 @@ using __iter_diff_t = typename iterator_traits<_Iter>::difference_type;
template<class _InputIterator>
using __iter_value_type = typename iterator_traits<_InputIterator>::value_type;
+template <class _Iter>
+using __iter_reference = typename iterator_traits<_Iter>::reference;
+
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP___ITERATOR_ITERATOR_TRAITS_H
diff --git a/libcxx/include/__memory/allocator.h b/libcxx/include/__memory/allocator.h
index 6e7800cbd2b9..98f68899e4ef 100644
--- a/libcxx/include/__memory/allocator.h
+++ b/libcxx/include/__memory/allocator.h
@@ -21,7 +21,6 @@
#include <__utility/forward.h>
#include <cstddef>
#include <new>
-#include <stdexcept>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__pstl/internal/execution_defs.h b/libcxx/include/__pstl/internal/execution_defs.h
index 21a4dc4e432a..af6164bc722c 100644
--- a/libcxx/include/__pstl/internal/execution_defs.h
+++ b/libcxx/include/__pstl/internal/execution_defs.h
@@ -10,7 +10,9 @@
#ifndef _PSTL_EXECUTION_POLICY_DEFS_H
#define _PSTL_EXECUTION_POLICY_DEFS_H
-#include <type_traits>
+#include <__type_traits/decay.h>
+#include <__type_traits/enable_if.h>
+#include <__type_traits/integral_constant.h>
#include "pstl_config.h"
diff --git a/libcxx/include/__pstl/internal/execution_impl.h b/libcxx/include/__pstl/internal/execution_impl.h
index c930824c2862..cc60bce8216b 100644
--- a/libcxx/include/__pstl/internal/execution_impl.h
+++ b/libcxx/include/__pstl/internal/execution_impl.h
@@ -10,8 +10,7 @@
#ifndef _PSTL_EXECUTION_IMPL_H
#define _PSTL_EXECUTION_IMPL_H
-#include <iterator>
-#include <type_traits>
+#include <__iterator/iterator_traits.h>
#include "execution_defs.h"
#include "pstl_config.h"
diff --git a/libcxx/include/__pstl/internal/parallel_backend_utils.h b/libcxx/include/__pstl/internal/parallel_backend_utils.h
index 9d9e0c5e3960..177717f28499 100644
--- a/libcxx/include/__pstl/internal/parallel_backend_utils.h
+++ b/libcxx/include/__pstl/internal/parallel_backend_utils.h
@@ -10,8 +10,9 @@
#ifndef _PSTL_PARALLEL_BACKEND_UTILS_H
#define _PSTL_PARALLEL_BACKEND_UTILS_H
-#include <iterator>
-#include <utility>
+#include <__iterator/iterator_traits.h>
+#include <__memory/addressof.h>
+
#include "utils.h"
#include "pstl_config.h"
diff --git a/libcxx/include/__pstl/internal/parallel_impl.h b/libcxx/include/__pstl/internal/parallel_impl.h
index 41744009b97c..961afd75f512 100644
--- a/libcxx/include/__pstl/internal/parallel_impl.h
+++ b/libcxx/include/__pstl/internal/parallel_impl.h
@@ -12,10 +12,8 @@
#include "pstl_config.h"
+#include <__atomic/atomic.h>
#include <__pstl/internal/parallel_backend.h>
-#include <atomic>
-// This header defines the minimum set of parallel routines required to support Parallel STL,
-// implemented on top of Intel(R) Threading Building Blocks (Intel(R) TBB) library
namespace __pstl
{
diff --git a/libcxx/include/__pstl/internal/unseq_backend_simd.h b/libcxx/include/__pstl/internal/unseq_backend_simd.h
index 1a32a341bbf6..3d7750036f5b 100644
--- a/libcxx/include/__pstl/internal/unseq_backend_simd.h
+++ b/libcxx/include/__pstl/internal/unseq_backend_simd.h
@@ -11,7 +11,7 @@
#define _PSTL_UNSEQ_BACKEND_SIMD_H
#include <__functional/operations.h>
-#include <type_traits>
+#include <__utility/pair.h>
#include "pstl_config.h"
#include "utils.h"
diff --git a/libcxx/include/__pstl/internal/utils.h b/libcxx/include/__pstl/internal/utils.h
index 1623983a1322..baaf4a69f201 100644
--- a/libcxx/include/__pstl/internal/utils.h
+++ b/libcxx/include/__pstl/internal/utils.h
@@ -11,9 +11,9 @@
#define _PSTL_UTILS_H
#include <__exception/terminate.h>
-#include <iterator>
+#include <__pstl/internal/pstl_config.h>
+#include <__utility/forward.h>
#include <new>
-#include <utility>
namespace __pstl {
namespace __internal {
diff --git a/libcxx/include/__utility/terminate_on_exception.h b/libcxx/include/__utility/terminate_on_exception.h
index 532d8eafb2a3..c046dee1e956 100644
--- a/libcxx/include/__utility/terminate_on_exception.h
+++ b/libcxx/include/__utility/terminate_on_exception.h
@@ -10,7 +10,7 @@
#define _LIBCPP___UTILITY_TERMINATE_ON_EXCEPTION_H
#include <__config>
-#include <exception>
+#include <__exception/terminate.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/any b/libcxx/include/any
index d2f85269599f..e056444f83c9 100644
--- a/libcxx/include/any
+++ b/libcxx/include/any
@@ -721,6 +721,7 @@ _LIBCPP_END_NAMESPACE_STD
# include <iosfwd>
# include <iterator>
# include <memory>
+# include <stdexcept>
# include <type_traits>
# include <variant>
#endif
diff --git a/libcxx/include/valarray b/libcxx/include/valarray
index 76ae4a3f8c66..001e111a07d5 100644
--- a/libcxx/include/valarray
+++ b/libcxx/include/valarray
@@ -4937,6 +4937,7 @@ _LIBCPP_POP_MACROS
# include <cstdlib>
# include <cstring>
# include <functional>
+# include <stdexcept>
# include <type_traits>
#endif
diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b.csv b/libcxx/test/libcxx/transitive_includes/cxx2b.csv
index 3f5758630f34..06bdb93e57ab 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx2b.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx2b.csv
@@ -13,7 +13,6 @@ any cstring
any initializer_list
any limits
any new
-any stdexcept
any typeinfo
any version
array compare
@@ -635,7 +634,6 @@ valarray cstdint
valarray initializer_list
valarray limits
valarray new
-valarray stdexcept
valarray version
variant compare
variant cstddef
diff --git a/libcxx/test/support/test_execution_policies.h b/libcxx/test/support/test_execution_policies.h
index d9180fb913bc..d0cf0ddb6f0d 100644
--- a/libcxx/test/support/test_execution_policies.h
+++ b/libcxx/test/support/test_execution_policies.h
@@ -10,6 +10,7 @@
#define TEST_SUPPORT_TEST_EXECUTION_POLICIES
#include <cstdlib>
+#include <exception>
#include <execution>
#include <type_traits>
#include <utility>