From d5e26775d089d099d02b168de8ea52179b1b1f75 Mon Sep 17 00:00:00 2001 From: Nikolas Klauser Date: Mon, 5 Sep 2022 00:01:15 +0200 Subject: [PATCH] [libc++] Granularize the rest of memory Reviewed By: ldionne, #libc Spies: vitalybuka, paulkirth, libcxx-commits, mgorny Differential Revision: https://reviews.llvm.org/D132790 --- libcxx/include/CMakeLists.txt | 6 + libcxx/include/__algorithm/inplace_merge.h | 6 +- libcxx/include/__algorithm/ranges_copy.h | 1 + .../include/__algorithm/ranges_equal_range.h | 1 + libcxx/include/__algorithm/ranges_find_end.h | 1 + libcxx/include/__algorithm/ranges_minmax.h | 1 + .../__algorithm/ranges_next_permutation.h | 1 + .../include/__algorithm/ranges_partial_sort.h | 1 + .../__algorithm/ranges_partial_sort_copy.h | 1 + libcxx/include/__algorithm/ranges_partition.h | 1 + .../__algorithm/ranges_prev_permutation.h | 1 + libcxx/include/__algorithm/ranges_search.h | 1 + libcxx/include/__algorithm/ranges_search_n.h | 1 + .../__algorithm/ranges_set_difference.h | 1 + libcxx/include/__algorithm/ranges_unique.h | 1 + .../include/__algorithm/ranges_unique_copy.h | 1 + .../__algorithm/set_symmetric_difference.h | 1 + libcxx/include/__algorithm/set_union.h | 1 + libcxx/include/__algorithm/sort.h | 3 +- libcxx/include/__algorithm/stable_partition.h | 6 +- libcxx/include/__algorithm/stable_sort.h | 6 +- libcxx/include/__bsd_locale_fallbacks.h | 1 - .../include/__filesystem/filesystem_error.h | 1 + libcxx/include/__format/format_arg_store.h | 1 + libcxx/include/__format/formatter_integral.h | 1 + libcxx/include/__functional/function.h | 8 +- libcxx/include/__hash_table | 10 +- libcxx/include/__locale | 2 +- libcxx/include/__memory/align.h | 25 +++ .../include/__memory/builtin_new_allocator.h | 70 ++++++++ libcxx/include/__memory/construct_at.h | 1 + libcxx/include/__memory/destruct_n.h | 64 +++++++ libcxx/include/__memory/ranges_construct_at.h | 1 + .../ranges_uninitialized_algorithms.h | 1 + .../include/__memory/raw_storage_iterator.h | 1 + libcxx/include/__memory/shared_ptr.h | 1 + libcxx/include/__memory/temp_value.h | 56 ++++++ .../__memory/uninitialized_algorithms.h | 1 + libcxx/include/__node_handle | 3 +- libcxx/include/__split_buffer | 6 +- libcxx/include/__tree | 7 +- libcxx/include/__type_traits/is_allocator.h | 36 ++++ .../noexcept_move_assign_container.h | 34 ++++ libcxx/include/__utility/forward_like.h | 2 +- libcxx/include/algorithm | 6 +- libcxx/include/any | 11 +- libcxx/include/barrier | 11 +- libcxx/include/condition_variable | 3 +- libcxx/include/deque | 4 + libcxx/include/experimental/coroutine | 20 ++- libcxx/include/experimental/memory_resource | 15 +- libcxx/include/forward_list | 10 +- libcxx/include/fstream | 1 + libcxx/include/functional | 2 +- libcxx/include/future | 2 +- libcxx/include/list | 10 +- libcxx/include/locale | 3 +- libcxx/include/map | 5 +- libcxx/include/memory | 162 ++---------------- libcxx/include/module.modulemap.in | 6 + libcxx/include/mutex | 2 +- libcxx/include/ostream | 2 + libcxx/include/queue | 2 +- libcxx/include/regex | 2 +- libcxx/include/scoped_allocator | 24 ++- libcxx/include/set | 2 + libcxx/include/string | 8 +- libcxx/include/thread | 2 +- libcxx/include/unordered_map | 2 + libcxx/include/unordered_set | 2 + libcxx/include/vector | 5 +- .../compressed_pair/compressed_pair.pass.cpp | 1 + libcxx/test/libcxx/private_headers.verify.cpp | 6 + libcxx/test/libcxx/transitive_includes.sh.cpp | 2 +- .../cxx2b/expected.algorithm | 6 - .../transitive_includes/cxx2b/expected.any | 1 - .../cxx2b/expected.barrier | 5 - .../transitive_includes/cxx2b/expected.bitset | 5 - .../cxx2b/expected.ccomplex | 1 - .../cxx2b/expected.codecvt | 1 - .../cxx2b/expected.complex | 1 - .../cxx2b/expected.condition_variable | 1 - .../cxx2b/expected.ctgmath | 1 - .../transitive_includes/cxx2b/expected.deque | 1 - .../cxx2b/expected.experimental_algorithm | 6 - .../cxx2b/expected.experimental_coroutine | 13 -- .../cxx2b/expected.experimental_deque | 1 - .../cxx2b/expected.experimental_forward_list | 1 - .../cxx2b/expected.experimental_list | 1 - .../cxx2b/expected.experimental_map | 6 - .../expected.experimental_memory_resource | 8 - .../cxx2b/expected.experimental_regex | 1 - .../cxx2b/expected.experimental_set | 6 - .../cxx2b/expected.experimental_string | 5 - .../cxx2b/expected.experimental_unordered_map | 6 - .../cxx2b/expected.experimental_unordered_set | 6 - .../cxx2b/expected.experimental_vector | 1 - .../cxx2b/expected.filesystem | 1 - .../transitive_includes/cxx2b/expected.format | 1 - .../cxx2b/expected.forward_list | 1 - .../cxx2b/expected.fstream | 1 - .../transitive_includes/cxx2b/expected.future | 1 - .../cxx2b/expected.iomanip | 1 - .../transitive_includes/cxx2b/expected.ios | 1 - .../cxx2b/expected.iostream | 1 - .../cxx2b/expected.istream | 1 - .../transitive_includes/cxx2b/expected.list | 1 - .../transitive_includes/cxx2b/expected.locale | 1 - .../transitive_includes/cxx2b/expected.map | 6 - .../transitive_includes/cxx2b/expected.mutex | 1 - .../cxx2b/expected.ostream | 1 - .../transitive_includes/cxx2b/expected.queue | 5 - .../transitive_includes/cxx2b/expected.random | 1 - .../transitive_includes/cxx2b/expected.regex | 1 - .../cxx2b/expected.scoped_allocator | 11 -- .../transitive_includes/cxx2b/expected.set | 6 - .../cxx2b/expected.shared_mutex | 3 - .../cxx2b/expected.sstream | 1 - .../transitive_includes/cxx2b/expected.stack | 1 - .../cxx2b/expected.streambuf | 1 - .../transitive_includes/cxx2b/expected.string | 5 - .../cxx2b/expected.strstream | 1 - .../cxx2b/expected.system_error | 5 - .../transitive_includes/cxx2b/expected.thread | 3 - .../cxx2b/expected.unordered_map | 6 - .../cxx2b/expected.unordered_set | 6 - .../transitive_includes/cxx2b/expected.vector | 1 - .../libcxx/utilities/any/allocator.pass.cpp | 1 + .../pointer.conversion/to_address.pass.cpp | 2 + .../function_type_default_deleter.fail.cpp | 1 + .../alg.sorting/alg.min.max/minmax.pass.cpp | 1 + .../alg.min.max/minmax_init_list.pass.cpp | 1 + .../alg.min.max/ranges.minmax.pass.cpp | 1 + .../alg.sorting/alg.sort/sort/sort.pass.cpp | 1 + .../push_front_exception_safety.pass.cpp | 1 + .../push_back_exception_safety.pass.cpp | 1 + .../push_front_exception_safety.pass.cpp | 1 + .../suspend_always.pass.cpp | 1 + .../suspend_never.pass.cpp | 1 + .../use_facet.pass.cpp | 1 + .../range.adaptors/range.zip/general.pass.cpp | 1 + .../string.capacity/max_size.pass.cpp | 1 + .../func.wrap.func.con/alloc_F.verify.cpp | 1 + .../alloc_function.verify.cpp | 1 + .../allocate_at_least.pass.cpp | 1 + .../allocate.verify.cpp | 5 +- .../construct.pass.cpp | 1 + .../allocate.constexpr.size.verify.cpp | 3 +- .../allocator.members/allocate.size.pass.cpp | 1 + .../allocator_pointers.pass.cpp | 1 + .../pointer.conversion/to_address.pass.cpp | 2 + .../pointer_to.pass.cpp | 1 + .../memory/pointer.traits/pointer_to.pass.cpp | 1 + .../utilities/memory/ptr.align/align.pass.cpp | 3 +- .../uninitialized_copy.pass.cpp | 2 +- .../uninitialized_copy_n.pass.cpp | 2 +- .../uninitialized_fill_n.pass.cpp | 2 +- .../uninitialized_fill.pass.cpp | 2 +- .../temporary.buffer/overaligned.pass.cpp | 1 + .../temporary_buffer.pass.cpp | 1 + .../shared_ptr_rv.pass.cpp | 1 + .../unique_ptr_Y.pass.cpp | 1 + .../deduction.pass.cpp | 1 + .../shared_ptr_copy_move.fail.cpp | 1 + .../shared_ptr_pointer.pass.cpp | 1 + .../shared_ptr_rv.pass.cpp | 1 + .../unique_ptr.pass.cpp | 1 + .../allocate_shared_construct.pass.cpp | 4 +- .../weak_ptr.pass.cpp | 1 + .../weak_ptr.pass.cpp | 1 + .../bad_weak_ptr.pass.cpp | 1 + .../unique.ptr.observers/get_deleter.pass.cpp | 2 + .../op_subscript.runtime.pass.cpp | 3 + .../tuple.tuple/tuple.cnstr/move.pass.cpp | 1 + .../tuple.elem/tuple.by.type.fail.cpp | 2 + libcxx/test/support/allocators.h | 1 + libcxx/test/support/container_test_types.h | 1 + libcxx/test/support/controlled_allocators.h | 2 + libcxx/test/support/min_allocator.h | 1 + libcxxabi/src/cxa_guard_impl.h | 4 +- libcxxabi/src/demangle/ItaniumDemangle.h | 1 + 181 files changed, 593 insertions(+), 355 deletions(-) create mode 100644 libcxx/include/__memory/align.h create mode 100644 libcxx/include/__memory/builtin_new_allocator.h create mode 100644 libcxx/include/__memory/destruct_n.h create mode 100644 libcxx/include/__memory/temp_value.h create mode 100644 libcxx/include/__type_traits/is_allocator.h create mode 100644 libcxx/include/__type_traits/noexcept_move_assign_container.h diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt index ee2f3b7c0b25..e72b42cd5a05 100644 --- a/libcxx/include/CMakeLists.txt +++ b/libcxx/include/CMakeLists.txt @@ -379,6 +379,7 @@ set(files __locale __mbstate_t.h __memory/addressof.h + __memory/align.h __memory/allocate_at_least.h __memory/allocation_guard.h __memory/allocator.h @@ -386,15 +387,18 @@ set(files __memory/allocator_traits.h __memory/assume_aligned.h __memory/auto_ptr.h + __memory/builtin_new_allocator.h __memory/compressed_pair.h __memory/concepts.h __memory/construct_at.h + __memory/destruct_n.h __memory/pointer_traits.h __memory/ranges_construct_at.h __memory/ranges_uninitialized_algorithms.h __memory/raw_storage_iterator.h __memory/shared_ptr.h __memory/swap_allocator.h + __memory/temp_value.h __memory/temporary_buffer.h __memory/uninitialized_algorithms.h __memory/unique_ptr.h @@ -537,6 +541,7 @@ set(files __type_traits/integral_constant.h __type_traits/is_abstract.h __type_traits/is_aggregate.h + __type_traits/is_allocator.h __type_traits/is_arithmetic.h __type_traits/is_array.h __type_traits/is_assignable.h @@ -619,6 +624,7 @@ set(files __type_traits/maybe_const.h __type_traits/nat.h __type_traits/negation.h + __type_traits/noexcept_move_assign_container.h __type_traits/promote.h __type_traits/rank.h __type_traits/remove_all_extents.h diff --git a/libcxx/include/__algorithm/inplace_merge.h b/libcxx/include/__algorithm/inplace_merge.h index 01a871af1da6..dc5108aace56 100644 --- a/libcxx/include/__algorithm/inplace_merge.h +++ b/libcxx/include/__algorithm/inplace_merge.h @@ -23,7 +23,11 @@ #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> #include <__iterator/reverse_iterator.h> -#include +#include <__memory/destruct_n.h> +#include <__memory/temporary_buffer.h> +#include <__memory/unique_ptr.h> +#include <__utility/pair.h> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_copy.h b/libcxx/include/__algorithm/ranges_copy.h index 0d85310b157c..87a6a1e1361f 100644 --- a/libcxx/include/__algorithm/ranges_copy.h +++ b/libcxx/include/__algorithm/ranges_copy.h @@ -18,6 +18,7 @@ #include <__ranges/concepts.h> #include <__ranges/dangling.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_equal_range.h b/libcxx/include/__algorithm/ranges_equal_range.h index beeba182e05b..efe5b2f4193b 100644 --- a/libcxx/include/__algorithm/ranges_equal_range.h +++ b/libcxx/include/__algorithm/ranges_equal_range.h @@ -24,6 +24,7 @@ #include <__ranges/subrange.h> #include <__utility/forward.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_find_end.h b/libcxx/include/__algorithm/ranges_find_end.h index d9be148d443d..df891000b526 100644 --- a/libcxx/include/__algorithm/ranges_find_end.h +++ b/libcxx/include/__algorithm/ranges_find_end.h @@ -21,6 +21,7 @@ #include <__ranges/access.h> #include <__ranges/concepts.h> #include <__ranges/subrange.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_minmax.h b/libcxx/include/__algorithm/ranges_minmax.h index 11471bec4346..377fe9b4a26d 100644 --- a/libcxx/include/__algorithm/ranges_minmax.h +++ b/libcxx/include/__algorithm/ranges_minmax.h @@ -23,6 +23,7 @@ #include <__ranges/concepts.h> #include <__utility/forward.h> #include <__utility/move.h> +#include <__utility/pair.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__algorithm/ranges_next_permutation.h b/libcxx/include/__algorithm/ranges_next_permutation.h index 5c9e75a60238..6c8e8e1529f2 100644 --- a/libcxx/include/__algorithm/ranges_next_permutation.h +++ b/libcxx/include/__algorithm/ranges_next_permutation.h @@ -22,6 +22,7 @@ #include <__ranges/concepts.h> #include <__ranges/dangling.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_partial_sort.h b/libcxx/include/__algorithm/ranges_partial_sort.h index b427e6b3b235..3ea0a7fb44b5 100644 --- a/libcxx/include/__algorithm/ranges_partial_sort.h +++ b/libcxx/include/__algorithm/ranges_partial_sort.h @@ -27,6 +27,7 @@ #include <__ranges/dangling.h> #include <__utility/forward.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_partial_sort_copy.h b/libcxx/include/__algorithm/ranges_partial_sort_copy.h index 9ad8980e6aee..212db555a8d3 100644 --- a/libcxx/include/__algorithm/ranges_partial_sort_copy.h +++ b/libcxx/include/__algorithm/ranges_partial_sort_copy.h @@ -24,6 +24,7 @@ #include <__ranges/concepts.h> #include <__ranges/dangling.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_partition.h b/libcxx/include/__algorithm/ranges_partition.h index 0d55210ea243..eaa696d82f82 100644 --- a/libcxx/include/__algorithm/ranges_partition.h +++ b/libcxx/include/__algorithm/ranges_partition.h @@ -26,6 +26,7 @@ #include <__ranges/subrange.h> #include <__utility/forward.h> #include <__utility/move.h> +#include <__utility/pair.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__algorithm/ranges_prev_permutation.h b/libcxx/include/__algorithm/ranges_prev_permutation.h index 133bc6a1be8b..6866d90cf484 100644 --- a/libcxx/include/__algorithm/ranges_prev_permutation.h +++ b/libcxx/include/__algorithm/ranges_prev_permutation.h @@ -22,6 +22,7 @@ #include <__ranges/concepts.h> #include <__ranges/dangling.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_search.h b/libcxx/include/__algorithm/ranges_search.h index 4ac43fa17fd8..24bbe28ead4d 100644 --- a/libcxx/include/__algorithm/ranges_search.h +++ b/libcxx/include/__algorithm/ranges_search.h @@ -22,6 +22,7 @@ #include <__ranges/concepts.h> #include <__ranges/size.h> #include <__ranges/subrange.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_search_n.h b/libcxx/include/__algorithm/ranges_search_n.h index ce06729f457b..d2846f6c5c87 100644 --- a/libcxx/include/__algorithm/ranges_search_n.h +++ b/libcxx/include/__algorithm/ranges_search_n.h @@ -25,6 +25,7 @@ #include <__ranges/size.h> #include <__ranges/subrange.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_set_difference.h b/libcxx/include/__algorithm/ranges_set_difference.h index 8b972023b5b9..398ccc975f22 100644 --- a/libcxx/include/__algorithm/ranges_set_difference.h +++ b/libcxx/include/__algorithm/ranges_set_difference.h @@ -23,6 +23,7 @@ #include <__ranges/dangling.h> #include <__type_traits/decay.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_unique.h b/libcxx/include/__algorithm/ranges_unique.h index 96373460d5f6..45e54276ed55 100644 --- a/libcxx/include/__algorithm/ranges_unique.h +++ b/libcxx/include/__algorithm/ranges_unique.h @@ -26,6 +26,7 @@ #include <__ranges/subrange.h> #include <__utility/forward.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/ranges_unique_copy.h b/libcxx/include/__algorithm/ranges_unique_copy.h index f7b2293d02a1..3ad47b06f5db 100644 --- a/libcxx/include/__algorithm/ranges_unique_copy.h +++ b/libcxx/include/__algorithm/ranges_unique_copy.h @@ -27,6 +27,7 @@ #include <__ranges/dangling.h> #include <__utility/forward.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/set_symmetric_difference.h b/libcxx/include/__algorithm/set_symmetric_difference.h index 31e2e87efa94..3dd093c9e148 100644 --- a/libcxx/include/__algorithm/set_symmetric_difference.h +++ b/libcxx/include/__algorithm/set_symmetric_difference.h @@ -15,6 +15,7 @@ #include <__config> #include <__iterator/iterator_traits.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/set_union.h b/libcxx/include/__algorithm/set_union.h index 76cd30b76c73..ce15623942b8 100644 --- a/libcxx/include/__algorithm/set_union.h +++ b/libcxx/include/__algorithm/set_union.h @@ -15,6 +15,7 @@ #include <__config> #include <__iterator/iterator_traits.h> #include <__utility/move.h> +#include <__utility/pair.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/sort.h b/libcxx/include/__algorithm/sort.h index a7d9002d2cb1..4ff3379e7a0b 100644 --- a/libcxx/include/__algorithm/sort.h +++ b/libcxx/include/__algorithm/sort.h @@ -22,8 +22,9 @@ #include <__functional/operations.h> #include <__functional/ranges_operations.h> #include <__iterator/iterator_traits.h> +#include <__memory/destruct_n.h> +#include <__memory/unique_ptr.h> #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__algorithm/stable_partition.h b/libcxx/include/__algorithm/stable_partition.h index a5c7e862203e..b85acc755207 100644 --- a/libcxx/include/__algorithm/stable_partition.h +++ b/libcxx/include/__algorithm/stable_partition.h @@ -15,7 +15,11 @@ #include <__iterator/advance.h> #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> -#include +#include <__memory/destruct_n.h> +#include <__memory/temporary_buffer.h> +#include <__memory/unique_ptr.h> +#include <__utility/pair.h> +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__algorithm/stable_sort.h b/libcxx/include/__algorithm/stable_sort.h index dfd428f8ec36..1b8aafbb1913 100644 --- a/libcxx/include/__algorithm/stable_sort.h +++ b/libcxx/include/__algorithm/stable_sort.h @@ -16,8 +16,12 @@ #include <__algorithm/sort.h> #include <__config> #include <__iterator/iterator_traits.h> +#include <__memory/destruct_n.h> +#include <__memory/temporary_buffer.h> +#include <__memory/unique_ptr.h> #include <__utility/move.h> -#include +#include <__utility/pair.h> +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__bsd_locale_fallbacks.h b/libcxx/include/__bsd_locale_fallbacks.h index 3d5b78574480..9abd7e7e5ff4 100644 --- a/libcxx/include/__bsd_locale_fallbacks.h +++ b/libcxx/include/__bsd_locale_fallbacks.h @@ -13,7 +13,6 @@ #ifndef _LIBCPP___BSD_LOCALE_FALLBACKS_H #define _LIBCPP___BSD_LOCALE_FALLBACKS_H -#include #include #include diff --git a/libcxx/include/__filesystem/filesystem_error.h b/libcxx/include/__filesystem/filesystem_error.h index e32b14c1b7bf..eb5c38ad12e1 100644 --- a/libcxx/include/__filesystem/filesystem_error.h +++ b/libcxx/include/__filesystem/filesystem_error.h @@ -14,6 +14,7 @@ #include <__config> #include <__filesystem/path.h> #include <__memory/shared_ptr.h> +#include <__utility/forward.h> #include #include #include diff --git a/libcxx/include/__format/format_arg_store.h b/libcxx/include/__format/format_arg_store.h index 26a5e71b93af..1820c0387c1b 100644 --- a/libcxx/include/__format/format_arg_store.h +++ b/libcxx/include/__format/format_arg_store.h @@ -19,6 +19,7 @@ #include <__config> #include <__format/concepts.h> #include <__format/format_arg.h> +#include <__utility/forward.h> #include #include #include diff --git a/libcxx/include/__format/formatter_integral.h b/libcxx/include/__format/formatter_integral.h index d23b39837f88..87c6d559b08a 100644 --- a/libcxx/include/__format/formatter_integral.h +++ b/libcxx/include/__format/formatter_integral.h @@ -18,6 +18,7 @@ #include <__format/formatter_output.h> #include <__format/parser_std_format_spec.h> #include <__utility/unreachable.h> +#include #include #include #include diff --git a/libcxx/include/__functional/function.h b/libcxx/include/__functional/function.h index bcecd3e5623d..8a4a2cfc57f7 100644 --- a/libcxx/include/__functional/function.h +++ b/libcxx/include/__functional/function.h @@ -17,15 +17,21 @@ #include <__functional/unary_function.h> #include <__iterator/iterator_traits.h> #include <__memory/addressof.h> +#include <__memory/allocator.h> #include <__memory/allocator_traits.h> +#include <__memory/builtin_new_allocator.h> #include <__memory/compressed_pair.h> #include <__memory/shared_ptr.h> +#include <__memory/unique_ptr.h> #include <__utility/forward.h> #include <__utility/move.h> +#include <__utility/piecewise_construct.h> #include <__utility/swap.h> #include -#include // TODO: replace with <__memory/__builtin_new_allocator.h> +#include +#include #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__hash_table b/libcxx/include/__hash_table index 51a8bf8267fa..5a72ccfeb544 100644 --- a/libcxx/include/__hash_table +++ b/libcxx/include/__hash_table @@ -18,12 +18,20 @@ #include <__debug> #include <__functional/hash.h> #include <__iterator/iterator_traits.h> +#include <__memory/addressof.h> +#include <__memory/allocator_traits.h> +#include <__memory/compressed_pair.h> +#include <__memory/pointer_traits.h> #include <__memory/swap_allocator.h> +#include <__memory/unique_ptr.h> #include <__type_traits/can_extract_key.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> #include <__utility/swap.h> #include +#include #include -#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__locale b/libcxx/include/__locale index 0bf8344ab5e1..65160f3562fb 100644 --- a/libcxx/include/__locale +++ b/libcxx/include/__locale @@ -12,10 +12,10 @@ #include <__availability> #include <__config> +#include <__memory/shared_ptr.h> #include #include #include -#include #include #include diff --git a/libcxx/include/__memory/align.h b/libcxx/include/__memory/align.h new file mode 100644 index 000000000000..c6792206b075 --- /dev/null +++ b/libcxx/include/__memory/align.h @@ -0,0 +1,25 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___MEMORY_ALIGN_H +#define _LIBCPP___MEMORY_ALIGN_H + +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +_LIBCPP_FUNC_VIS void* align(size_t __align, size_t __sz, void*& __ptr, size_t& __space); + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___MEMORY_ALIGN_H diff --git a/libcxx/include/__memory/builtin_new_allocator.h b/libcxx/include/__memory/builtin_new_allocator.h new file mode 100644 index 000000000000..cd1a866ca615 --- /dev/null +++ b/libcxx/include/__memory/builtin_new_allocator.h @@ -0,0 +1,70 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___MEMORY_BUILTIN_NEW_ALLOCATOR_H +#define _LIBCPP___MEMORY_BUILTIN_NEW_ALLOCATOR_H + +#include <__config> +#include <__memory/unique_ptr.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// __builtin_new_allocator -- A non-templated helper for allocating and +// deallocating memory using __builtin_operator_new and +// __builtin_operator_delete. It should be used in preference to +// `std::allocator` to avoid additional instantiations. +struct __builtin_new_allocator { + struct __builtin_new_deleter { + typedef void* pointer_type; + + _LIBCPP_CONSTEXPR explicit __builtin_new_deleter(size_t __size, size_t __align) + : __size_(__size), __align_(__align) {} + + void operator()(void* __p) const _NOEXCEPT { + _VSTD::__libcpp_deallocate(__p, __size_, __align_); + } + + private: + size_t __size_; + size_t __align_; + }; + + typedef unique_ptr __holder_t; + + static __holder_t __allocate_bytes(size_t __s, size_t __align) { + return __holder_t(_VSTD::__libcpp_allocate(__s, __align), + __builtin_new_deleter(__s, __align)); + } + + static void __deallocate_bytes(void* __p, size_t __s, + size_t __align) _NOEXCEPT { + _VSTD::__libcpp_deallocate(__p, __s, __align); + } + + template + _LIBCPP_NODEBUG _LIBCPP_ALWAYS_INLINE + static __holder_t __allocate_type(size_t __n) { + return __allocate_bytes(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)); + } + + template + _LIBCPP_NODEBUG _LIBCPP_ALWAYS_INLINE + static void __deallocate_type(void* __p, size_t __n) _NOEXCEPT { + __deallocate_bytes(__p, __n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)); + } +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___MEMORY_BUILTIN_NEW_ALLOCATOR_H diff --git a/libcxx/include/__memory/construct_at.h b/libcxx/include/__memory/construct_at.h index 709388303a35..a11a6ebe44a5 100644 --- a/libcxx/include/__memory/construct_at.h +++ b/libcxx/include/__memory/construct_at.h @@ -17,6 +17,7 @@ #include <__memory/voidify.h> #include <__utility/forward.h> #include <__utility/move.h> +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__memory/destruct_n.h b/libcxx/include/__memory/destruct_n.h new file mode 100644 index 000000000000..2cfb2e4c88ce --- /dev/null +++ b/libcxx/include/__memory/destruct_n.h @@ -0,0 +1,64 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___MEMORY_DESTRUCT_N_H +#define _LIBCPP___MEMORY_DESTRUCT_N_H + +#include <__config> +#include <__type_traits/integral_constant.h> +#include <__type_traits/is_trivially_destructible.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +struct __destruct_n +{ +private: + size_t __size_; + + template + _LIBCPP_INLINE_VISIBILITY void __process(_Tp* __p, false_type) _NOEXCEPT + {for (size_t __i = 0; __i < __size_; ++__i, ++__p) __p->~_Tp();} + + template + _LIBCPP_INLINE_VISIBILITY void __process(_Tp*, true_type) _NOEXCEPT + {} + + _LIBCPP_INLINE_VISIBILITY void __incr(false_type) _NOEXCEPT + {++__size_;} + _LIBCPP_INLINE_VISIBILITY void __incr(true_type) _NOEXCEPT + {} + + _LIBCPP_INLINE_VISIBILITY void __set(size_t __s, false_type) _NOEXCEPT + {__size_ = __s;} + _LIBCPP_INLINE_VISIBILITY void __set(size_t, true_type) _NOEXCEPT + {} +public: + _LIBCPP_INLINE_VISIBILITY explicit __destruct_n(size_t __s) _NOEXCEPT + : __size_(__s) {} + + template + _LIBCPP_INLINE_VISIBILITY void __incr() _NOEXCEPT + {__incr(integral_constant::value>());} + + template + _LIBCPP_INLINE_VISIBILITY void __set(size_t __s, _Tp*) _NOEXCEPT + {__set(__s, integral_constant::value>());} + + template + _LIBCPP_INLINE_VISIBILITY void operator()(_Tp* __p) _NOEXCEPT + {__process(__p, integral_constant::value>());} +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___MEMORY_DESTRUCT_N_H diff --git a/libcxx/include/__memory/ranges_construct_at.h b/libcxx/include/__memory/ranges_construct_at.h index 3fee8a45cef8..19cd0ff7e894 100644 --- a/libcxx/include/__memory/ranges_construct_at.h +++ b/libcxx/include/__memory/ranges_construct_at.h @@ -22,6 +22,7 @@ #include <__utility/declval.h> #include <__utility/forward.h> #include <__utility/move.h> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__memory/ranges_uninitialized_algorithms.h b/libcxx/include/__memory/ranges_uninitialized_algorithms.h index 57662a8703ac..7d2ac3af035d 100644 --- a/libcxx/include/__memory/ranges_uninitialized_algorithms.h +++ b/libcxx/include/__memory/ranges_uninitialized_algorithms.h @@ -24,6 +24,7 @@ #include <__ranges/concepts.h> #include <__ranges/dangling.h> #include <__utility/move.h> +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__memory/raw_storage_iterator.h b/libcxx/include/__memory/raw_storage_iterator.h index 9b6594b8883e..11971de0fa47 100644 --- a/libcxx/include/__memory/raw_storage_iterator.h +++ b/libcxx/include/__memory/raw_storage_iterator.h @@ -16,6 +16,7 @@ #include <__memory/addressof.h> #include <__utility/move.h> #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/__memory/shared_ptr.h b/libcxx/include/__memory/shared_ptr.h index 53113c0d61fd..b350bcdac444 100644 --- a/libcxx/include/__memory/shared_ptr.h +++ b/libcxx/include/__memory/shared_ptr.h @@ -34,6 +34,7 @@ #include #include // abort #include +#include #include #include #include diff --git a/libcxx/include/__memory/temp_value.h b/libcxx/include/__memory/temp_value.h new file mode 100644 index 000000000000..164688b15f81 --- /dev/null +++ b/libcxx/include/__memory/temp_value.h @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___MEMORY_TEMP_VALUE_H +#define _LIBCPP___MEMORY_TEMP_VALUE_H + +#include <__config> +#include <__memory/addressof.h> +#include <__memory/allocator_traits.h> +#include <__type_traits/aligned_storage.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __temp_value { + typedef allocator_traits<_Alloc> _Traits; + +#ifdef _LIBCPP_CXX03_LANG + typename aligned_storage::type __v; +#else + union { _Tp __v; }; +#endif + _Alloc &__a; + + _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp *__addr() { +#ifdef _LIBCPP_CXX03_LANG + return reinterpret_cast<_Tp*>(std::addressof(__v)); +#else + return std::addressof(__v); +#endif + } + + _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp & get() { return *__addr(); } + + template + _LIBCPP_NO_CFI + _LIBCPP_CONSTEXPR_SINCE_CXX20 __temp_value(_Alloc &__alloc, _Args&& ... __args) : __a(__alloc) { + _Traits::construct(__a, __addr(), std::forward<_Args>(__args)...); + } + + _LIBCPP_CONSTEXPR_SINCE_CXX20 ~__temp_value() { _Traits::destroy(__a, __addr()); } +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___MEMORY_TEMP_VALUE_H diff --git a/libcxx/include/__memory/uninitialized_algorithms.h b/libcxx/include/__memory/uninitialized_algorithms.h index dc58fb31942b..6a7b7087ab7f 100644 --- a/libcxx/include/__memory/uninitialized_algorithms.h +++ b/libcxx/include/__memory/uninitialized_algorithms.h @@ -24,6 +24,7 @@ #include <__utility/move.h> #include <__utility/pair.h> #include <__utility/transaction.h> +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__node_handle b/libcxx/include/__node_handle index 71309be62f3c..8cb6d625a85a 100644 --- a/libcxx/include/__node_handle +++ b/libcxx/include/__node_handle @@ -60,7 +60,8 @@ public: #include <__assert> #include <__config> -#include +#include <__memory/allocator_traits.h> +#include <__memory/pointer_traits.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__split_buffer b/libcxx/include/__split_buffer index d58baa13e86c..2ffa0086d1bd 100644 --- a/libcxx/include/__split_buffer +++ b/libcxx/include/__split_buffer @@ -17,11 +17,15 @@ #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> #include <__iterator/move_iterator.h> +#include <__memory/allocate_at_least.h> #include <__memory/allocator.h> +#include <__memory/allocator_traits.h> #include <__memory/compressed_pair.h> +#include <__memory/pointer_traits.h> +#include <__memory/shared_ptr.h> #include <__memory/swap_allocator.h> #include <__utility/forward.h> -#include +#include <__utility/move.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__tree b/libcxx/include/__tree index 867a8561dcd9..b4e9569ab0fb 100644 --- a/libcxx/include/__tree +++ b/libcxx/include/__tree @@ -17,12 +17,17 @@ #include <__iterator/distance.h> #include <__iterator/iterator_traits.h> #include <__iterator/next.h> +#include <__memory/allocator_traits.h> +#include <__memory/compressed_pair.h> +#include <__memory/pointer_traits.h> #include <__memory/swap_allocator.h> +#include <__memory/unique_ptr.h> #include <__type_traits/can_extract_key.h> #include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> #include <__utility/swap.h> #include -#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__type_traits/is_allocator.h b/libcxx/include/__type_traits/is_allocator.h new file mode 100644 index 000000000000..f4d70e9dd71e --- /dev/null +++ b/libcxx/include/__type_traits/is_allocator.h @@ -0,0 +1,36 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___TYPE_IS_ALLOCATOR_H +#define _LIBCPP___TYPE_IS_ALLOCATOR_H + +#include <__config> +#include <__type_traits/integral_constant.h> +#include <__type_traits/void_t.h> +#include <__utility/declval.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __is_allocator : false_type {}; + +template +struct __is_allocator<_Alloc, + typename __void_t::type, + typename __void_t().allocate(size_t(0)))>::type + > + : true_type {}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___TYPE_IS_ALLOCATOR_H diff --git a/libcxx/include/__type_traits/noexcept_move_assign_container.h b/libcxx/include/__type_traits/noexcept_move_assign_container.h new file mode 100644 index 000000000000..f8edd76fc8c6 --- /dev/null +++ b/libcxx/include/__type_traits/noexcept_move_assign_container.h @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___TYPE_TRAITS_NOEXCEPT_MOVE_ASSIGN_CONTAINER_H +#define _LIBCPP___TYPE_TRAITS_NOEXCEPT_MOVE_ASSIGN_CONTAINER_H + +#include <__config> +#include <__memory/allocator_traits.h> +#include <__type_traits/integral_constant.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template > +struct __noexcept_move_assign_container : public integral_constant 14 + || _Traits::is_always_equal::value +#else + && is_nothrow_move_assignable<_Alloc>::value +#endif + > {}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___TYPE_TRAITS_NOEXCEPT_MOVE_ASSIGN_CONTAINER_H diff --git a/libcxx/include/__utility/forward_like.h b/libcxx/include/__utility/forward_like.h index 780976992b09..1446964da542 100644 --- a/libcxx/include/__utility/forward_like.h +++ b/libcxx/include/__utility/forward_like.h @@ -34,7 +34,7 @@ template using _ForwardLike = _OverrideRef<_Ap&&, _CopyConst, remove_reference_t<_Bp>>>; template -[[nodiscard]] constexpr auto forward_like(_Up&& __ux) noexcept -> _ForwardLike<_Tp, _Up> { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto forward_like(_Up&& __ux) noexcept -> _ForwardLike<_Tp, _Up> { return static_cast<_ForwardLike<_Tp, _Up>>(__ux); } diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm index f036fd00dd16..06d0a40ce69d 100644 --- a/libcxx/include/algorithm +++ b/libcxx/include/algorithm @@ -1709,7 +1709,6 @@ template #include <__debug> #include #include -#include #include #include @@ -1907,7 +1906,7 @@ template #endif #if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) && _LIBCPP_STD_VER >= 17 -# include <__pstl_algorithm> +# include <__pstl_algorithm> #endif #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17 @@ -1915,7 +1914,10 @@ template #endif #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include # include +# include +# include # include #endif diff --git a/libcxx/include/any b/libcxx/include/any index ec12cfa9c2e9..527af769c8c6 100644 --- a/libcxx/include/any +++ b/libcxx/include/any @@ -83,13 +83,16 @@ namespace std { #include <__assert> // all public C++ headers provide the assertion handler #include <__availability> #include <__config> +#include <__memory/allocator.h> +#include <__memory/allocator_traits.h> +#include <__memory/shared_ptr.h> +#include <__memory/unique_ptr.h> #include <__utility/forward.h> #include <__utility/in_place.h> #include <__utility/move.h> #include <__utility/unreachable.h> #include #include -#include #include #include #include @@ -695,4 +698,10 @@ _LIBCPP_END_NAMESPACE_STD # include // IGNORE-CYCLE due to #endif +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +# include +# include +#endif + #endif // _LIBCPP_ANY diff --git a/libcxx/include/barrier b/libcxx/include/barrier index d5104b5803d2..836a0031d31c 100644 --- a/libcxx/include/barrier +++ b/libcxx/include/barrier @@ -48,10 +48,19 @@ namespace std #include <__assert> // all public C++ headers provide the assertion handler #include <__availability> #include <__config> +#include <__memory/unique_ptr.h> #include <__thread/timed_backoff_policy.h> +#include <__utility/move.h> #include #include -#include + +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +# include +# include +# include +# include +#endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/condition_variable b/libcxx/include/condition_variable index 92088f3e1b22..038f0ba2257d 100644 --- a/libcxx/include/condition_variable +++ b/libcxx/include/condition_variable @@ -108,8 +108,9 @@ public: #include <__assert> // all public C++ headers provide the assertion handler #include <__config> +#include <__memory/shared_ptr.h> +#include <__memory/unique_ptr.h> #include <__mutex_base> -#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/deque b/libcxx/include/deque index 9a26f16bc0fe..bce6bc2305a8 100644 --- a/libcxx/include/deque +++ b/libcxx/include/deque @@ -176,7 +176,11 @@ template #include <__iterator/next.h> #include <__iterator/prev.h> #include <__iterator/reverse_iterator.h> +#include <__memory/pointer_traits.h> +#include <__memory/temp_value.h> +#include <__memory/unique_ptr.h> #include <__split_buffer> +#include <__type_traits/is_allocator.h> #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/swap.h> diff --git a/libcxx/include/experimental/coroutine b/libcxx/include/experimental/coroutine index e32aedcff4d7..55062d4887bc 100644 --- a/libcxx/include/experimental/coroutine +++ b/libcxx/include/experimental/coroutine @@ -50,10 +50,28 @@ template struct hash>; #include <__functional/operations.h> #include #include -#include // for hash #include #include +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +#endif + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/experimental/memory_resource b/libcxx/include/experimental/memory_resource index 510e282f1f23..f6f01dcd15cb 100644 --- a/libcxx/include/experimental/memory_resource +++ b/libcxx/include/experimental/memory_resource @@ -65,6 +65,7 @@ namespace pmr { */ #include <__assert> // all public C++ headers provide the assertion handler +#include <__memory/allocator_traits.h> #include <__tuple> #include <__utility/move.h> #include @@ -72,11 +73,23 @@ namespace pmr { #include #include #include -#include #include #include +#include #include +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +# include +# include +# include +# include +# include +# include +# include +# include +#endif + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list index d5ea3ecd035b..4087992db68e 100644 --- a/libcxx/include/forward_list +++ b/libcxx/include/forward_list @@ -188,10 +188,18 @@ template #include <__iterator/iterator_traits.h> #include <__iterator/move_iterator.h> #include <__iterator/next.h> +#include <__memory/addressof.h> +#include <__memory/allocator.h> +#include <__memory/allocator_traits.h> +#include <__memory/compressed_pair.h> +#include <__memory/pointer_traits.h> +#include <__memory/shared_ptr.h> #include <__memory/swap_allocator.h> +#include <__memory/unique_ptr.h> +#include <__type_traits/is_allocator.h> #include <__utility/forward.h> +#include <__utility/move.h> #include -#include #include #include diff --git a/libcxx/include/fstream b/libcxx/include/fstream index a6bd4a83b680..95f345fae4d7 100644 --- a/libcxx/include/fstream +++ b/libcxx/include/fstream @@ -192,6 +192,7 @@ typedef basic_fstream wfstream; #include #include #include +#include #include #if !defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY) diff --git a/libcxx/include/functional b/libcxx/include/functional index 60f65141c7cd..ab2c62ddda4c 100644 --- a/libcxx/include/functional +++ b/libcxx/include/functional @@ -533,7 +533,7 @@ POLICY: For non-variadic implementations, the number of arguments is limited #include <__utility/forward.h> #include #include -#include +#include // TODO: find out why removing this breaks the modules build #include #include #include diff --git a/libcxx/include/future b/libcxx/include/future index 716daa7e532c..1bc9a9546542 100644 --- a/libcxx/include/future +++ b/libcxx/include/future @@ -372,8 +372,8 @@ template struct uses_allocator, Alloc>; #include <__utility/forward.h> #include <__utility/move.h> #include -#include #include +#include #include #include #include diff --git a/libcxx/include/list b/libcxx/include/list index a4e6defea8ce..e5a6c3f4568f 100644 --- a/libcxx/include/list +++ b/libcxx/include/list @@ -194,12 +194,20 @@ template #include <__iterator/next.h> #include <__iterator/prev.h> #include <__iterator/reverse_iterator.h> +#include <__memory/addressof.h> +#include <__memory/allocator.h> +#include <__memory/allocator_traits.h> +#include <__memory/compressed_pair.h> +#include <__memory/pointer_traits.h> +#include <__memory/shared_ptr.h> #include <__memory/swap_allocator.h> +#include <__memory/unique_ptr.h> +#include <__type_traits/is_allocator.h> #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/swap.h> +#include #include -#include #include #include diff --git a/libcxx/include/locale b/libcxx/include/locale index 3fe8f5dd0e3b..fec6c2f90977 100644 --- a/libcxx/include/locale +++ b/libcxx/include/locale @@ -201,13 +201,14 @@ template class messages_byname; #include <__iterator/istreambuf_iterator.h> #include <__iterator/ostreambuf_iterator.h> #include <__locale> +#include <__memory/unique_ptr.h> #include // TODO: Remove this include #include #include #include #include #include -#include +#include #include #include diff --git a/libcxx/include/map b/libcxx/include/map index 20e6126918d6..6df74c3b43e4 100644 --- a/libcxx/include/map +++ b/libcxx/include/map @@ -538,11 +538,14 @@ erase_if(multimap& c, Predicate pred); // C++20 #include <__iterator/erase_if_container.h> #include <__iterator/iterator_traits.h> #include <__iterator/reverse_iterator.h> +#include <__memory/allocator.h> #include <__node_handle> #include <__tree> +#include <__type_traits/is_allocator.h> #include <__utility/forward.h> +#include <__utility/piecewise_construct.h> #include <__utility/swap.h> -#include +#include #include #include diff --git a/libcxx/include/memory b/libcxx/include/memory index 9776de630f14..4d29b7103ba6 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -860,11 +860,10 @@ template */ -#include <__algorithm/copy.h> -#include <__algorithm/move.h> #include <__assert> // all public C++ headers provide the assertion handler #include <__config> #include <__memory/addressof.h> +#include <__memory/align.h> #include <__memory/allocate_at_least.h> #include <__memory/allocation_guard.h> #include <__memory/allocator.h> @@ -884,15 +883,6 @@ template #include <__memory/uninitialized_algorithms.h> #include <__memory/unique_ptr.h> #include <__memory/uses_allocator.h> -#include -#include -#include -#include -#include -#include -#include -#include -#include #include // standard-mandated includes @@ -902,153 +892,21 @@ template # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - -struct __destruct_n -{ -private: - size_t __size_; - - template - _LIBCPP_INLINE_VISIBILITY void __process(_Tp* __p, false_type) _NOEXCEPT - {for (size_t __i = 0; __i < __size_; ++__i, ++__p) __p->~_Tp();} - - template - _LIBCPP_INLINE_VISIBILITY void __process(_Tp*, true_type) _NOEXCEPT - {} - - _LIBCPP_INLINE_VISIBILITY void __incr(false_type) _NOEXCEPT - {++__size_;} - _LIBCPP_INLINE_VISIBILITY void __incr(true_type) _NOEXCEPT - {} - - _LIBCPP_INLINE_VISIBILITY void __set(size_t __s, false_type) _NOEXCEPT - {__size_ = __s;} - _LIBCPP_INLINE_VISIBILITY void __set(size_t, true_type) _NOEXCEPT - {} -public: - _LIBCPP_INLINE_VISIBILITY explicit __destruct_n(size_t __s) _NOEXCEPT - : __size_(__s) {} - - template - _LIBCPP_INLINE_VISIBILITY void __incr() _NOEXCEPT - {__incr(integral_constant::value>());} - - template - _LIBCPP_INLINE_VISIBILITY void __set(size_t __s, _Tp*) _NOEXCEPT - {__set(__s, integral_constant::value>());} - - template - _LIBCPP_INLINE_VISIBILITY void operator()(_Tp* __p) _NOEXCEPT - {__process(__p, integral_constant::value>());} -}; - -_LIBCPP_FUNC_VIS void* align(size_t __align, size_t __sz, void*& __ptr, size_t& __space); - -template > -struct __noexcept_move_assign_container : public integral_constant 14 - || _Traits::is_always_equal::value -#else - && is_nothrow_move_assignable<_Alloc>::value -#endif - > {}; - - -template -struct __temp_value { - typedef allocator_traits<_Alloc> _Traits; - -#ifdef _LIBCPP_CXX03_LANG - typename aligned_storage::type __v; -#else - union { _Tp __v; }; -#endif - _Alloc &__a; - - _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp *__addr() { -#ifdef _LIBCPP_CXX03_LANG - return reinterpret_cast<_Tp*>(std::addressof(__v)); -#else - return std::addressof(__v); -#endif - } - - _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp & get() { return *__addr(); } - - template - _LIBCPP_NO_CFI - _LIBCPP_CONSTEXPR_SINCE_CXX20 __temp_value(_Alloc &__alloc, _Args&& ... __args) : __a(__alloc) { - _Traits::construct(__a, __addr(), std::forward<_Args>(__args)...); - } - - _LIBCPP_CONSTEXPR_SINCE_CXX20 ~__temp_value() { _Traits::destroy(__a, __addr()); } -}; - -template -struct __is_allocator : false_type {}; - -template -struct __is_allocator<_Alloc, - typename __void_t::type, - typename __void_t().allocate(size_t(0)))>::type - > - : true_type {}; - -// __builtin_new_allocator -- A non-templated helper for allocating and -// deallocating memory using __builtin_operator_new and -// __builtin_operator_delete. It should be used in preference to -// `std::allocator` to avoid additional instantiations. -struct __builtin_new_allocator { - struct __builtin_new_deleter { - typedef void* pointer_type; - - _LIBCPP_CONSTEXPR explicit __builtin_new_deleter(size_t __size, size_t __align) - : __size_(__size), __align_(__align) {} - - void operator()(void* __p) const _NOEXCEPT { - _VSTD::__libcpp_deallocate(__p, __size_, __align_); - } - - private: - size_t __size_; - size_t __align_; - }; - - typedef unique_ptr __holder_t; - - static __holder_t __allocate_bytes(size_t __s, size_t __align) { - return __holder_t(_VSTD::__libcpp_allocate(__s, __align), - __builtin_new_deleter(__s, __align)); - } - - static void __deallocate_bytes(void* __p, size_t __s, - size_t __align) _NOEXCEPT { - _VSTD::__libcpp_deallocate(__p, __s, __align); - } - - template - _LIBCPP_NODEBUG _LIBCPP_ALWAYS_INLINE - static __holder_t __allocate_type(size_t __n) { - return __allocate_bytes(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)); - } - - template - _LIBCPP_NODEBUG _LIBCPP_ALWAYS_INLINE - static void __deallocate_type(void* __p, size_t __n) _NOEXCEPT { - __deallocate_bytes(__p, __n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)); - } -}; - -_LIBCPP_END_NAMESPACE_STD - #if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) && _LIBCPP_STD_VER >= 17 # include <__pstl_memory> #endif #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +# include +# include +# include # include +# include +# include +# include +# include +# include # include #endif diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in index f0ec768fbed4..e9f8cdc82f55 100644 --- a/libcxx/include/module.modulemap.in +++ b/libcxx/include/module.modulemap.in @@ -834,6 +834,7 @@ module std [system] { module __memory { module addressof { private header "__memory/addressof.h" } + module align { private header "__memory/align.h" } module allocate_at_least { private header "__memory/allocate_at_least.h" } module allocation_guard { private header "__memory/allocation_guard.h" } module allocator { private header "__memory/allocator.h" } @@ -841,15 +842,18 @@ module std [system] { module allocator_traits { private header "__memory/allocator_traits.h" } module assume_aligned { private header "__memory/assume_aligned.h" } module auto_ptr { private header "__memory/auto_ptr.h" } + module builtin_new_allocator { private header "__memory/builtin_new_allocator.h" } module compressed_pair { private header "__memory/compressed_pair.h" } module concepts { private header "__memory/concepts.h" } module construct_at { private header "__memory/construct_at.h" } + module destruct_n { private header "__memory/destruct_n.h" } module pointer_traits { private header "__memory/pointer_traits.h" } module ranges_construct_at { private header "__memory/ranges_construct_at.h" } module ranges_uninitialized_algorithms { private header "__memory/ranges_uninitialized_algorithms.h" } module raw_storage_iterator { private header "__memory/raw_storage_iterator.h" } module shared_ptr { private header "__memory/shared_ptr.h" } module swap_allocator { private header "__memory/swap_allocator.h" } + module temp_value { private header "__memory/temp_value.h" } module temporary_buffer { private header "__memory/temporary_buffer.h" } module uninitialized_algorithms { private header "__memory/uninitialized_algorithms.h" } module unique_ptr { private header "__memory/unique_ptr.h" } @@ -1129,6 +1133,7 @@ module std [system] { module integral_constant { private header "__type_traits/integral_constant.h" } module is_abstract { private header "__type_traits/is_abstract.h" } module is_aggregate { private header "__type_traits/is_aggregate.h" } + module is_allocator { private header "__type_traits/is_allocator.h" } module is_arithmetic { private header "__type_traits/is_arithmetic.h" } module is_array { private header "__type_traits/is_array.h" } module is_assignable { private header "__type_traits/is_assignable.h" } @@ -1211,6 +1216,7 @@ module std [system] { module maybe_const { private header "__type_traits/maybe_const.h" } module nat { private header "__type_traits/nat.h" } module negation { private header "__type_traits/negation.h" } + module noexcept_move_assign_container { private header "__type_traits/noexcept_move_assign_container.h" } module promote { private header "__type_traits/promote.h" } module rank { private header "__type_traits/rank.h" } module remove_all_extents { private header "__type_traits/remove_all_extents.h" } diff --git a/libcxx/include/mutex b/libcxx/include/mutex index 3aea375ba16d..139a7f5b93ed 100644 --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -188,11 +188,11 @@ template #include <__assert> // all public C++ headers provide the assertion handler #include <__config> +#include <__memory/shared_ptr.h> #include <__mutex_base> #include <__threading_support> #include <__utility/forward.h> #include -#include #ifndef _LIBCPP_CXX03_LANG # include #endif diff --git a/libcxx/include/ostream b/libcxx/include/ostream index 19fe7b0daa92..c15b058b2c55 100644 --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -165,9 +165,11 @@ basic_ostream& operator<<(basic_ostream&, cons #include <__assert> // all public C++ headers provide the assertion handler #include <__config> +#include <__memory/unique_ptr.h> #include #include #include +#include #include #include diff --git a/libcxx/include/queue b/libcxx/include/queue index 5e4b6bad17a3..f36ccfdeedb3 100644 --- a/libcxx/include/queue +++ b/libcxx/include/queue @@ -956,7 +956,7 @@ struct _LIBCPP_TEMPLATE_VIS uses_allocator #endif diff --git a/libcxx/include/regex b/libcxx/include/regex index 95a211fc3de0..e1799d913a8a 100644 --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -770,9 +770,9 @@ typedef regex_token_iterator wsregex_token_iterator; #include <__iterator/wrap_iter.h> #include <__locale> #include <__utility/move.h> +#include <__utility/pair.h> #include <__utility/swap.h> #include -#include #include #include #include diff --git a/libcxx/include/scoped_allocator b/libcxx/include/scoped_allocator index cf82affba78f..331d92cd5971 100644 --- a/libcxx/include/scoped_allocator +++ b/libcxx/include/scoped_allocator @@ -111,10 +111,32 @@ template #include <__assert> // all public C++ headers provide the assertion handler #include <__config> +#include <__memory/allocator_traits.h> +#include <__type_traits/common_type.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/integral_constant.h> +#include <__type_traits/is_constructible.h> +#include <__type_traits/remove_reference.h> #include <__utility/forward.h> -#include +#include <__utility/move.h> +#include <__utility/pair.h> +#include <__utility/piecewise_construct.h> +#include #include +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +#endif + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/include/set b/libcxx/include/set index e25185717a8a..f7ce27c1d80b 100644 --- a/libcxx/include/set +++ b/libcxx/include/set @@ -480,8 +480,10 @@ erase_if(multiset& c, Predicate pred); // C++20 #include <__iterator/erase_if_container.h> #include <__iterator/iterator_traits.h> #include <__iterator/reverse_iterator.h> +#include <__memory/allocator.h> #include <__node_handle> #include <__tree> +#include <__type_traits/is_allocator.h> #include <__utility/forward.h> #include diff --git a/libcxx/include/string b/libcxx/include/string index 26e55ce44405..44c2045e37e5 100644 --- a/libcxx/include/string +++ b/libcxx/include/string @@ -545,9 +545,16 @@ basic_string operator "" s( const char32_t *str, size_t len ); #include <__iterator/reverse_iterator.h> #include <__iterator/wrap_iter.h> #include <__memory/allocate_at_least.h> +#include <__memory/allocator.h> +#include <__memory/allocator_traits.h> +#include <__memory/compressed_pair.h> +#include <__memory/construct_at.h> +#include <__memory/pointer_traits.h> #include <__memory/swap_allocator.h> #include <__string/char_traits.h> #include <__string/extern_template_lists.h> +#include <__type_traits/is_allocator.h> +#include <__type_traits/noexcept_move_assign_container.h> #include <__utility/auto_cast.h> #include <__utility/move.h> #include <__utility/swap.h> @@ -559,7 +566,6 @@ basic_string operator "" s( const char32_t *str, size_t len ); #include #include #include -#include #include #include #include diff --git a/libcxx/include/thread b/libcxx/include/thread index 85e927525312..3ec629357ba4 100644 --- a/libcxx/include/thread +++ b/libcxx/include/thread @@ -86,6 +86,7 @@ void sleep_for(const chrono::duration& rel_time); #include <__assert> // all public C++ headers provide the assertion handler #include <__config> #include <__functional/hash.h> +#include <__memory/unique_ptr.h> #include <__mutex_base> #include <__thread/poll_with_backoff.h> #include <__thread/timed_backoff_policy.h> @@ -93,7 +94,6 @@ void sleep_for(const chrono::duration& rel_time); #include <__utility/forward.h> #include #include -#include #include #include #include diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map index 38de4d834b0c..2f20ad34a169 100644 --- a/libcxx/include/unordered_map +++ b/libcxx/include/unordered_map @@ -525,7 +525,9 @@ template #include <__iterator/erase_if_container.h> #include <__iterator/iterator_traits.h> #include <__memory/addressof.h> +#include <__memory/allocator.h> #include <__node_handle> +#include <__type_traits/is_allocator.h> #include <__utility/forward.h> #include #include diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set index 2440450aa3df..3efc3556d7cf 100644 --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -470,7 +470,9 @@ template #include <__iterator/erase_if_container.h> #include <__iterator/iterator_traits.h> #include <__memory/addressof.h> +#include <__memory/allocator.h> #include <__node_handle> +#include <__type_traits/is_allocator.h> #include <__utility/forward.h> #include diff --git a/libcxx/include/vector b/libcxx/include/vector index 8b27eaaeeec0..440409811fa1 100644 --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -293,7 +293,11 @@ erase_if(vector& c, Predicate pred); // C++20 #include <__memory/allocate_at_least.h> #include <__memory/pointer_traits.h> #include <__memory/swap_allocator.h> +#include <__memory/temp_value.h> +#include <__memory/uninitialized_algorithms.h> #include <__split_buffer> +#include <__type_traits/is_allocator.h> +#include <__type_traits/noexcept_move_assign_container.h> #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/swap.h> @@ -302,7 +306,6 @@ erase_if(vector& c, Predicate pred); // C++20 #include #include // for forward declaration of vector #include -#include #include #include #include diff --git a/libcxx/test/libcxx/memory/compressed_pair/compressed_pair.pass.cpp b/libcxx/test/libcxx/memory/compressed_pair/compressed_pair.pass.cpp index 53acd8face82..8bc890a208d0 100644 --- a/libcxx/test/libcxx/memory/compressed_pair/compressed_pair.pass.cpp +++ b/libcxx/test/libcxx/memory/compressed_pair/compressed_pair.pass.cpp @@ -8,6 +8,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/libcxx/private_headers.verify.cpp b/libcxx/test/libcxx/private_headers.verify.cpp index d69f8f27d427..c822992e38c0 100644 --- a/libcxx/test/libcxx/private_headers.verify.cpp +++ b/libcxx/test/libcxx/private_headers.verify.cpp @@ -410,6 +410,7 @@ END-SCRIPT #include <__locale> // expected-error@*:* {{use of private header from outside its module: '__locale'}} #include <__mbstate_t.h> // expected-error@*:* {{use of private header from outside its module: '__mbstate_t.h'}} #include <__memory/addressof.h> // expected-error@*:* {{use of private header from outside its module: '__memory/addressof.h'}} +#include <__memory/align.h> // expected-error@*:* {{use of private header from outside its module: '__memory/align.h'}} #include <__memory/allocate_at_least.h> // expected-error@*:* {{use of private header from outside its module: '__memory/allocate_at_least.h'}} #include <__memory/allocation_guard.h> // expected-error@*:* {{use of private header from outside its module: '__memory/allocation_guard.h'}} #include <__memory/allocator.h> // expected-error@*:* {{use of private header from outside its module: '__memory/allocator.h'}} @@ -417,15 +418,18 @@ END-SCRIPT #include <__memory/allocator_traits.h> // expected-error@*:* {{use of private header from outside its module: '__memory/allocator_traits.h'}} #include <__memory/assume_aligned.h> // expected-error@*:* {{use of private header from outside its module: '__memory/assume_aligned.h'}} #include <__memory/auto_ptr.h> // expected-error@*:* {{use of private header from outside its module: '__memory/auto_ptr.h'}} +#include <__memory/builtin_new_allocator.h> // expected-error@*:* {{use of private header from outside its module: '__memory/builtin_new_allocator.h'}} #include <__memory/compressed_pair.h> // expected-error@*:* {{use of private header from outside its module: '__memory/compressed_pair.h'}} #include <__memory/concepts.h> // expected-error@*:* {{use of private header from outside its module: '__memory/concepts.h'}} #include <__memory/construct_at.h> // expected-error@*:* {{use of private header from outside its module: '__memory/construct_at.h'}} +#include <__memory/destruct_n.h> // expected-error@*:* {{use of private header from outside its module: '__memory/destruct_n.h'}} #include <__memory/pointer_traits.h> // expected-error@*:* {{use of private header from outside its module: '__memory/pointer_traits.h'}} #include <__memory/ranges_construct_at.h> // expected-error@*:* {{use of private header from outside its module: '__memory/ranges_construct_at.h'}} #include <__memory/ranges_uninitialized_algorithms.h> // expected-error@*:* {{use of private header from outside its module: '__memory/ranges_uninitialized_algorithms.h'}} #include <__memory/raw_storage_iterator.h> // expected-error@*:* {{use of private header from outside its module: '__memory/raw_storage_iterator.h'}} #include <__memory/shared_ptr.h> // expected-error@*:* {{use of private header from outside its module: '__memory/shared_ptr.h'}} #include <__memory/swap_allocator.h> // expected-error@*:* {{use of private header from outside its module: '__memory/swap_allocator.h'}} +#include <__memory/temp_value.h> // expected-error@*:* {{use of private header from outside its module: '__memory/temp_value.h'}} #include <__memory/temporary_buffer.h> // expected-error@*:* {{use of private header from outside its module: '__memory/temporary_buffer.h'}} #include <__memory/uninitialized_algorithms.h> // expected-error@*:* {{use of private header from outside its module: '__memory/uninitialized_algorithms.h'}} #include <__memory/unique_ptr.h> // expected-error@*:* {{use of private header from outside its module: '__memory/unique_ptr.h'}} @@ -549,6 +553,7 @@ END-SCRIPT #include <__type_traits/integral_constant.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/integral_constant.h'}} #include <__type_traits/is_abstract.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/is_abstract.h'}} #include <__type_traits/is_aggregate.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/is_aggregate.h'}} +#include <__type_traits/is_allocator.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/is_allocator.h'}} #include <__type_traits/is_arithmetic.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/is_arithmetic.h'}} #include <__type_traits/is_array.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/is_array.h'}} #include <__type_traits/is_assignable.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/is_assignable.h'}} @@ -631,6 +636,7 @@ END-SCRIPT #include <__type_traits/maybe_const.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/maybe_const.h'}} #include <__type_traits/nat.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/nat.h'}} #include <__type_traits/negation.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/negation.h'}} +#include <__type_traits/noexcept_move_assign_container.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/noexcept_move_assign_container.h'}} #include <__type_traits/promote.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/promote.h'}} #include <__type_traits/rank.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/rank.h'}} #include <__type_traits/remove_all_extents.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/remove_all_extents.h'}} diff --git a/libcxx/test/libcxx/transitive_includes.sh.cpp b/libcxx/test/libcxx/transitive_includes.sh.cpp index f53637d511ae..a17a3fbd1dcf 100644 --- a/libcxx/test/libcxx/transitive_includes.sh.cpp +++ b/libcxx/test/libcxx/transitive_includes.sh.cpp @@ -33,7 +33,7 @@ // This test is not supported when we remove the transitive includes provided for backwards // compatibility. When we bulk-remove them, we'll adjust the includes that are expected by // this test instead. -// XFAIL: transitive-includes-disabled +// UNSUPPORTED: transitive-includes-disabled // Prevent from generating deprecated warnings for this test. #if defined(__DEPRECATED) diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.algorithm b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.algorithm index 2ba314028719..af06e12efc9d 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.algorithm +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.algorithm @@ -1,4 +1,3 @@ -atomic bit climits cmath @@ -8,16 +7,11 @@ cstddef cstdint cstdlib cstring -ctime exception initializer_list iosfwd limits -memory new -ratio -stdexcept tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.any b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.any index 3b7a13de63fe..626b4a41fe97 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.any +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.any @@ -12,7 +12,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.barrier b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.barrier index 3b7a13de63fe..83db015ba8c5 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.barrier +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.barrier @@ -2,21 +2,16 @@ atomic climits cmath compare -concepts cstddef cstdint cstdlib cstring ctime exception -initializer_list iosfwd limits -memory new ratio -stdexcept tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.bitset b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.bitset index 960707082bab..1c742b1972d3 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.bitset +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.bitset @@ -1,4 +1,3 @@ -atomic cctype climits cmath @@ -9,20 +8,16 @@ cstdint cstdio cstdlib cstring -ctime cwchar cwctype exception initializer_list iosfwd limits -memory new -ratio stdexcept string string_view tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ccomplex b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ccomplex index eb5fe7c87bf7..f79ea2f02a94 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ccomplex +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ccomplex @@ -23,7 +23,6 @@ iosfwd istream limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.codecvt b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.codecvt index 1aa71f549fd4..525723ed20b2 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.codecvt +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.codecvt @@ -17,7 +17,6 @@ exception initializer_list iosfwd limits -memory mutex new ratio diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.complex b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.complex index 1acc28a14008..19da66df982b 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.complex +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.complex @@ -22,7 +22,6 @@ iosfwd istream limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.condition_variable b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.condition_variable index 30ca93cf23bd..4b6b70f55a15 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.condition_variable +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.condition_variable @@ -17,7 +17,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ctgmath b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ctgmath index cfc2d04436fe..9d4728e160e5 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ctgmath +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ctgmath @@ -24,7 +24,6 @@ iosfwd istream limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.deque b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.deque index 3b7a13de63fe..626b4a41fe97 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.deque +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.deque @@ -12,7 +12,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_algorithm b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_algorithm index 8e539be98cbc..313807ad9490 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_algorithm +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_algorithm @@ -1,5 +1,4 @@ algorithm -atomic bit climits cmath @@ -9,16 +8,11 @@ cstddef cstdint cstdlib cstring -ctime exception initializer_list iosfwd limits -memory new -ratio -stdexcept tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_coroutine b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_coroutine index 3b7a13de63fe..a85c5ddb32e6 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_coroutine +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_coroutine @@ -1,22 +1,9 @@ -atomic -climits -cmath -compare -concepts cstddef cstdint cstdlib cstring -ctime exception -initializer_list -iosfwd limits -memory new -ratio -stdexcept -tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_deque b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_deque index 7ea4c318ba5d..a8bd778d7f96 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_deque +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_deque @@ -15,7 +15,6 @@ experimental/utility initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_forward_list b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_forward_list index 345444b4dc74..262944b9436e 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_forward_list +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_forward_list @@ -15,7 +15,6 @@ forward_list initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_list b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_list index 794d13ed7465..33fa6ac9ceec 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_list +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_list @@ -15,7 +15,6 @@ initializer_list iosfwd limits list -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_map b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_map index 69067ff958d0..2c337ca63351 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_map +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_map @@ -1,5 +1,3 @@ -atomic -climits cmath compare concepts @@ -7,7 +5,6 @@ cstddef cstdint cstdlib cstring -ctime exception experimental/memory_resource experimental/utility @@ -15,13 +12,10 @@ initializer_list iosfwd limits map -memory new optional -ratio stdexcept tuple type_traits -typeinfo utility version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_memory_resource b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_memory_resource index 36bd21dbc079..852039aaf369 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_memory_resource +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_memory_resource @@ -1,24 +1,16 @@ -atomic -climits cmath compare -concepts cstddef cstdint cstdlib -cstring -ctime exception experimental/utility initializer_list iosfwd limits -memory new -ratio stdexcept tuple type_traits -typeinfo utility version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_regex b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_regex index a73c05437d8c..92b60feaf76f 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_regex +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_regex @@ -21,7 +21,6 @@ experimental/utility initializer_list iosfwd limits -memory mutex new ratio diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_set b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_set index 1f0e82973328..97d4fecf6434 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_set +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_set @@ -1,5 +1,3 @@ -atomic -climits cmath compare concepts @@ -7,21 +5,17 @@ cstddef cstdint cstdlib cstring -ctime exception experimental/memory_resource experimental/utility initializer_list iosfwd limits -memory new optional -ratio set stdexcept tuple type_traits -typeinfo utility version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_string b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_string index bb9f8892e4d2..5ec4bfe93aa3 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_string +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_string @@ -1,4 +1,3 @@ -atomic cctype climits cmath @@ -9,7 +8,6 @@ cstdint cstdio cstdlib cstring -ctime cwchar cwctype exception @@ -18,14 +16,11 @@ experimental/utility initializer_list iosfwd limits -memory new -ratio stdexcept string string_view tuple type_traits -typeinfo utility version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_unordered_map b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_unordered_map index c9efa53073e4..c497967f90af 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_unordered_map +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_unordered_map @@ -1,5 +1,3 @@ -atomic -climits cmath compare concepts @@ -7,21 +5,17 @@ cstddef cstdint cstdlib cstring -ctime exception experimental/memory_resource experimental/utility initializer_list iosfwd limits -memory new optional -ratio stdexcept tuple type_traits -typeinfo unordered_map utility version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_unordered_set b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_unordered_set index 1b34d3cfe7f8..9a1b417f2ccd 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_unordered_set +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_unordered_set @@ -1,5 +1,3 @@ -atomic -climits cmath compare concepts @@ -7,21 +5,17 @@ cstddef cstdint cstdlib cstring -ctime exception experimental/memory_resource experimental/utility initializer_list iosfwd limits -memory new optional -ratio stdexcept tuple type_traits -typeinfo unordered_set utility version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_vector b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_vector index 0813d43655e7..14a94c0203de 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_vector +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_vector @@ -14,7 +14,6 @@ experimental/utility initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.filesystem b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.filesystem index 86446ab031fb..0405dacb0c41 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.filesystem +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.filesystem @@ -23,7 +23,6 @@ iosfwd istream limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.format b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.format index e01e3c7db48c..b775246f33e8 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.format +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.format @@ -23,7 +23,6 @@ ios iosfwd limits locale -memory mutex new optional diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.forward_list b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.forward_list index 3b7a13de63fe..626b4a41fe97 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.forward_list +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.forward_list @@ -12,7 +12,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.fstream b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.fstream index adc5812121df..3b3af567b05d 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.fstream +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.fstream @@ -24,7 +24,6 @@ iosfwd istream limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.future b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.future index 92035b609110..ba6d3a44d1c5 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.future +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.future @@ -17,7 +17,6 @@ exception initializer_list iosfwd limits -memory mutex new ratio diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.iomanip b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.iomanip index cbd4a87c1613..83cb709478eb 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.iomanip +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.iomanip @@ -22,7 +22,6 @@ iosfwd istream limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ios b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ios index 1aa71f549fd4..525723ed20b2 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ios +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ios @@ -17,7 +17,6 @@ exception initializer_list iosfwd limits -memory mutex new ratio diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.iostream b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.iostream index cbd4a87c1613..83cb709478eb 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.iostream +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.iostream @@ -22,7 +22,6 @@ iosfwd istream limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.istream b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.istream index 1d7da3e2f96d..3dcf229eb79b 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.istream +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.istream @@ -21,7 +21,6 @@ ios iosfwd limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.list b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.list index 3b7a13de63fe..626b4a41fe97 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.list +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.list @@ -12,7 +12,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.locale b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.locale index 4872956288ba..50c8681da0ba 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.locale +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.locale @@ -19,7 +19,6 @@ initializer_list ios iosfwd limits -memory mutex new ratio diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.map b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.map index b319682ec3f5..573d3aa59bcf 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.map +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.map @@ -1,5 +1,3 @@ -atomic -climits cmath compare concepts @@ -7,17 +5,13 @@ cstddef cstdint cstdlib cstring -ctime exception initializer_list iosfwd limits -memory new optional -ratio stdexcept tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.mutex b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.mutex index 30ca93cf23bd..4b6b70f55a15 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.mutex +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.mutex @@ -17,7 +17,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ostream b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ostream index 2d9bbe970eb1..b0962f6424b1 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ostream +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.ostream @@ -21,7 +21,6 @@ ios iosfwd limits locale -memory mutex new ratio diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.queue b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.queue index 97a526221748..616c41e5e2fb 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.queue +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.queue @@ -1,4 +1,3 @@ -array atomic climits cmath @@ -11,18 +10,14 @@ cstring ctime deque exception -functional initializer_list iosfwd limits -memory new -optional ratio stdexcept tuple type_traits typeinfo -unordered_map vector version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.random b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.random index 0aae5eb71c7d..0dca23ef4024 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.random +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.random @@ -17,7 +17,6 @@ exception initializer_list iosfwd limits -memory new numeric ratio diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.regex b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.regex index da1e93138977..992fa7d09649 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.regex +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.regex @@ -18,7 +18,6 @@ exception initializer_list iosfwd limits -memory mutex new ratio diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.scoped_allocator b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.scoped_allocator index 3b7a13de63fe..a25e41c53dc4 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.scoped_allocator +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.scoped_allocator @@ -1,22 +1,11 @@ -atomic -climits cmath compare -concepts cstddef cstdint cstdlib -cstring -ctime exception -initializer_list -iosfwd limits -memory new -ratio -stdexcept tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.set b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.set index b319682ec3f5..573d3aa59bcf 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.set +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.set @@ -1,5 +1,3 @@ -atomic -climits cmath compare concepts @@ -7,17 +5,13 @@ cstddef cstdint cstdlib cstring -ctime exception initializer_list iosfwd limits -memory new optional -ratio stdexcept tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.shared_mutex b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.shared_mutex index 30ca93cf23bd..8ec7c41bca45 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.shared_mutex +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.shared_mutex @@ -1,4 +1,3 @@ -atomic cctype cerrno climits @@ -17,7 +16,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept @@ -26,5 +24,4 @@ string_view system_error tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.sstream b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.sstream index cbd4a87c1613..83cb709478eb 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.sstream +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.sstream @@ -22,7 +22,6 @@ iosfwd istream limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.stack b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.stack index aa51131432ea..c64611690bae 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.stack +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.stack @@ -13,7 +13,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.streambuf b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.streambuf index 3ecae9323ab4..23fe84b18cbc 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.streambuf +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.streambuf @@ -18,7 +18,6 @@ initializer_list ios iosfwd limits -memory mutex new ratio diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.string b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.string index 2cb394a387b2..0b7d2f2c92e9 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.string +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.string @@ -1,4 +1,3 @@ -atomic cctype climits cmath @@ -9,19 +8,15 @@ cstdint cstdio cstdlib cstring -ctime cwchar cwctype exception initializer_list iosfwd limits -memory new -ratio stdexcept string_view tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.strstream b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.strstream index cbd4a87c1613..83cb709478eb 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.strstream +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.strstream @@ -22,7 +22,6 @@ iosfwd istream limits locale -memory mutex new ostream diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.system_error b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.system_error index 033d198c2bbe..fd9ba21f30aa 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.system_error +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.system_error @@ -1,4 +1,3 @@ -atomic cctype cerrno climits @@ -10,20 +9,16 @@ cstdint cstdio cstdlib cstring -ctime cwchar cwctype exception initializer_list iosfwd limits -memory new -ratio stdexcept string string_view tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.thread b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.thread index 30ca93cf23bd..8ec7c41bca45 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.thread +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.thread @@ -1,4 +1,3 @@ -atomic cctype cerrno climits @@ -17,7 +16,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept @@ -26,5 +24,4 @@ string_view system_error tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_map b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_map index b319682ec3f5..573d3aa59bcf 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_map +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_map @@ -1,5 +1,3 @@ -atomic -climits cmath compare concepts @@ -7,17 +5,13 @@ cstddef cstdint cstdlib cstring -ctime exception initializer_list iosfwd limits -memory new optional -ratio stdexcept tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_set b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_set index b319682ec3f5..573d3aa59bcf 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_set +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_set @@ -1,5 +1,3 @@ -atomic -climits cmath compare concepts @@ -7,17 +5,13 @@ cstddef cstdint cstdlib cstring -ctime exception initializer_list iosfwd limits -memory new optional -ratio stdexcept tuple type_traits -typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.vector b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.vector index 3b7a13de63fe..626b4a41fe97 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b/expected.vector +++ b/libcxx/test/libcxx/transitive_includes/cxx2b/expected.vector @@ -12,7 +12,6 @@ exception initializer_list iosfwd limits -memory new ratio stdexcept diff --git a/libcxx/test/libcxx/utilities/any/allocator.pass.cpp b/libcxx/test/libcxx/utilities/any/allocator.pass.cpp index 7891db665097..daaf74a2783f 100644 --- a/libcxx/test/libcxx/utilities/any/allocator.pass.cpp +++ b/libcxx/test/libcxx/utilities/any/allocator.pass.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include diff --git a/libcxx/test/libcxx/utilities/memory/pointer.conversion/to_address.pass.cpp b/libcxx/test/libcxx/utilities/memory/pointer.conversion/to_address.pass.cpp index bd2faa1f1acf..60ef98ae905d 100644 --- a/libcxx/test/libcxx/utilities/memory/pointer.conversion/to_address.pass.cpp +++ b/libcxx/test/libcxx/utilities/memory/pointer.conversion/to_address.pass.cpp @@ -13,6 +13,8 @@ #include #include +#include + #include "test_macros.h" struct Irrelevant; diff --git a/libcxx/test/libcxx/utilities/memory/util.smartptr/util.smartptr.shared/function_type_default_deleter.fail.cpp b/libcxx/test/libcxx/utilities/memory/util.smartptr/util.smartptr.shared/function_type_default_deleter.fail.cpp index 68ac9e3fc500..a0f3b5d04687 100644 --- a/libcxx/test/libcxx/utilities/memory/util.smartptr/util.smartptr.shared/function_type_default_deleter.fail.cpp +++ b/libcxx/test/libcxx/utilities/memory/util.smartptr/util.smartptr.shared/function_type_default_deleter.fail.cpp @@ -9,6 +9,7 @@ // UNSUPPORTED: c++03 #include +#include template struct Tag {}; diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax.pass.cpp index 0dffd52742c1..a5b7b220e3f9 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax.pass.cpp @@ -14,6 +14,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list.pass.cpp index d961ddc58a65..b1df77a8891a 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list.pass.cpp @@ -16,6 +16,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.minmax.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.minmax.pass.cpp index 6819bf993e1d..828a820acce9 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.minmax.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.min.max/ranges.minmax.pass.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include "test_iterators.h" diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp index c79f752b5de5..ed26c5b861f5 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_exception_safety.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_exception_safety.pass.cpp index 1154447b04a9..57b9f58c07fb 100644 --- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_exception_safety.pass.cpp +++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_exception_safety.pass.cpp @@ -13,6 +13,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/containers/sequences/list/list.modifiers/push_back_exception_safety.pass.cpp b/libcxx/test/std/containers/sequences/list/list.modifiers/push_back_exception_safety.pass.cpp index 8faf97a7dc4f..dec63a58ad93 100644 --- a/libcxx/test/std/containers/sequences/list/list.modifiers/push_back_exception_safety.pass.cpp +++ b/libcxx/test/std/containers/sequences/list/list.modifiers/push_back_exception_safety.pass.cpp @@ -13,6 +13,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/containers/sequences/list/list.modifiers/push_front_exception_safety.pass.cpp b/libcxx/test/std/containers/sequences/list/list.modifiers/push_front_exception_safety.pass.cpp index aadeaaf13512..4ce3b7e76b49 100644 --- a/libcxx/test/std/containers/sequences/list/list.modifiers/push_front_exception_safety.pass.cpp +++ b/libcxx/test/std/containers/sequences/list/list.modifiers/push_front_exception_safety.pass.cpp @@ -13,6 +13,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/experimental/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_always.pass.cpp b/libcxx/test/std/experimental/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_always.pass.cpp index 7e7eb610eea9..dd5673ba3be4 100644 --- a/libcxx/test/std/experimental/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_always.pass.cpp +++ b/libcxx/test/std/experimental/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_always.pass.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/experimental/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_never.pass.cpp b/libcxx/test/std/experimental/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_never.pass.cpp index 2acad5ed2523..8d59d6ae1f91 100644 --- a/libcxx/test/std/experimental/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_never.pass.cpp +++ b/libcxx/test/std/experimental/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_never.pass.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/localization/locales/locale.global.templates/use_facet.pass.cpp b/libcxx/test/std/localization/locales/locale.global.templates/use_facet.pass.cpp index 3c2cb604232a..f79317ff9ed0 100644 --- a/libcxx/test/std/localization/locales/locale.global.templates/use_facet.pass.cpp +++ b/libcxx/test/std/localization/locales/locale.global.templates/use_facet.pass.cpp @@ -12,6 +12,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/ranges/range.adaptors/range.zip/general.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.zip/general.pass.cpp index b443a1232531..1f0c39b3e8de 100644 --- a/libcxx/test/std/ranges/range.adaptors/range.zip/general.pass.cpp +++ b/libcxx/test/std/ranges/range.adaptors/range.zip/general.pass.cpp @@ -16,6 +16,7 @@ #include #include +#include #include #include diff --git a/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp index 230c844e93b6..b8e4198f54d4 100644 --- a/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp @@ -20,6 +20,7 @@ #include #include +#include #include "test_macros.h" #include "min_allocator.h" diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.verify.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.verify.cpp index 32405b79d5fb..2353b51a2d9f 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.verify.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.verify.cpp @@ -18,6 +18,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.verify.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.verify.cpp index e9199cb25257..4263eeef67de 100644 --- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.verify.cpp +++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.verify.cpp @@ -18,6 +18,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/allocator.traits/allocate_at_least.pass.cpp b/libcxx/test/std/utilities/memory/allocator.traits/allocate_at_least.pass.cpp index f33dbff7e2f1..c8e23948bcfb 100644 --- a/libcxx/test/std/utilities/memory/allocator.traits/allocate_at_least.pass.cpp +++ b/libcxx/test/std/utilities/memory/allocator.traits/allocate_at_least.pass.cpp @@ -16,6 +16,7 @@ #include #include +#include #include // check that std::allocation_result exists and isn't restricted to pointers diff --git a/libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/allocate.verify.cpp b/libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/allocate.verify.cpp index b1fc7a6bf637..7e3c41ced847 100644 --- a/libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/allocate.verify.cpp +++ b/libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/allocate.verify.cpp @@ -17,9 +17,10 @@ // UNSUPPORTED: c++03, c++11, c++14, c++17 -#include -#include #include +#include +#include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/construct.pass.cpp b/libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/construct.pass.cpp index 38e24fdc5db4..b2258ee523f1 100644 --- a/libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/construct.pass.cpp +++ b/libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/construct.pass.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "test_macros.h" #include "incomplete_type_helper.h" diff --git a/libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.constexpr.size.verify.cpp b/libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.constexpr.size.verify.cpp index a083e2d88b97..717ba0d3b433 100644 --- a/libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.constexpr.size.verify.cpp +++ b/libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.constexpr.size.verify.cpp @@ -13,8 +13,9 @@ // UNSUPPORTED: c++03, c++11, c++14, c++17 -#include #include +#include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.size.pass.cpp b/libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.size.pass.cpp index 6b9b12c82242..3622b7c84ada 100644 --- a/libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.size.pass.cpp +++ b/libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.size.pass.cpp @@ -14,6 +14,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/default.allocator/allocator_pointers.pass.cpp b/libcxx/test/std/utilities/memory/default.allocator/allocator_pointers.pass.cpp index 777e5dfc44f5..cb3ec8857a6f 100644 --- a/libcxx/test/std/utilities/memory/default.allocator/allocator_pointers.pass.cpp +++ b/libcxx/test/std/utilities/memory/default.allocator/allocator_pointers.pass.cpp @@ -10,6 +10,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/pointer.conversion/to_address.pass.cpp b/libcxx/test/std/utilities/memory/pointer.conversion/to_address.pass.cpp index b92700143aa6..fea34ffe99de 100644 --- a/libcxx/test/std/utilities/memory/pointer.conversion/to_address.pass.cpp +++ b/libcxx/test/std/utilities/memory/pointer.conversion/to_address.pass.cpp @@ -15,6 +15,8 @@ #include #include +#include + #include "test_macros.h" struct Irrelevant; diff --git a/libcxx/test/std/utilities/memory/pointer.traits/pointer.traits.functions/pointer_to.pass.cpp b/libcxx/test/std/utilities/memory/pointer.traits/pointer.traits.functions/pointer_to.pass.cpp index bd561ddb4471..62ea10cccc24 100644 --- a/libcxx/test/std/utilities/memory/pointer.traits/pointer.traits.functions/pointer_to.pass.cpp +++ b/libcxx/test/std/utilities/memory/pointer.traits/pointer.traits.functions/pointer_to.pass.cpp @@ -17,6 +17,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/pointer.traits/pointer_to.pass.cpp b/libcxx/test/std/utilities/memory/pointer.traits/pointer_to.pass.cpp index ebbbf8b97342..c4b5ca1a0326 100644 --- a/libcxx/test/std/utilities/memory/pointer.traits/pointer_to.pass.cpp +++ b/libcxx/test/std/utilities/memory/pointer.traits/pointer_to.pass.cpp @@ -17,6 +17,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/ptr.align/align.pass.cpp b/libcxx/test/std/utilities/memory/ptr.align/align.pass.cpp index d227238f000b..1fc29f76ced5 100644 --- a/libcxx/test/std/utilities/memory/ptr.align/align.pass.cpp +++ b/libcxx/test/std/utilities/memory/ptr.align/align.pass.cpp @@ -10,8 +10,9 @@ // void* align(size_t alignment, size_t size, void*& ptr, size_t& space); -#include #include +#include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp index 2618bd5339c9..c3b6e1809007 100644 --- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp +++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp @@ -40,7 +40,7 @@ int B::population_ = 0; struct Nasty { Nasty() : i_ ( counter_++ ) {} - Nasty * operator &() const { return NULL; } + Nasty * operator &() const { return nullptr; } int i_; static int counter_; }; diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy_n.pass.cpp index 1a237a7929db..9d0fae3a8e03 100644 --- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy_n.pass.cpp +++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy_n.pass.cpp @@ -40,7 +40,7 @@ int B::count_ = 0; struct Nasty { Nasty() : i_ ( counter_++ ) {} - Nasty * operator &() const { return NULL; } + Nasty * operator &() const { return nullptr; } int i_; static int counter_; }; diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill.n/uninitialized_fill_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill.n/uninitialized_fill_n.pass.cpp index 4dfde4f6e877..8b46f1ba67aa 100644 --- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill.n/uninitialized_fill_n.pass.cpp +++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill.n/uninitialized_fill_n.pass.cpp @@ -39,7 +39,7 @@ int B::population_ = 0; struct Nasty { Nasty() : i_ ( counter_++ ) {} - Nasty * operator &() const { return NULL; } + Nasty * operator &() const { return nullptr; } int i_; static int counter_; }; diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill/uninitialized_fill.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill/uninitialized_fill.pass.cpp index 1996ec6c6fff..fd6576d79ad1 100644 --- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill/uninitialized_fill.pass.cpp +++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill/uninitialized_fill.pass.cpp @@ -40,7 +40,7 @@ int B::population_ = 0; struct Nasty { Nasty() : i_ ( counter_++ ) {} - Nasty * operator &() const { return NULL; } + Nasty * operator &() const { return nullptr; } int i_; static int counter_; }; diff --git a/libcxx/test/std/utilities/memory/temporary.buffer/overaligned.pass.cpp b/libcxx/test/std/utilities/memory/temporary.buffer/overaligned.pass.cpp index 08aab53a8315..b8ba9885376a 100644 --- a/libcxx/test/std/utilities/memory/temporary.buffer/overaligned.pass.cpp +++ b/libcxx/test/std/utilities/memory/temporary.buffer/overaligned.pass.cpp @@ -27,6 +27,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/temporary.buffer/temporary_buffer.pass.cpp b/libcxx/test/std/utilities/memory/temporary.buffer/temporary_buffer.pass.cpp index 7a0f89412ce6..6c0fbf2568ff 100644 --- a/libcxx/test/std/utilities/memory/temporary.buffer/temporary_buffer.pass.cpp +++ b/libcxx/test/std/utilities/memory/temporary.buffer/temporary_buffer.pass.cpp @@ -20,6 +20,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_rv.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_rv.pass.cpp index 9dc51068140e..f48fe75447ee 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_rv.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_rv.pass.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/unique_ptr_Y.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/unique_ptr_Y.pass.cpp index 3063e776178f..35671c41842f 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/unique_ptr_Y.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/unique_ptr_Y.pass.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/deduction.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/deduction.pass.cpp index 7373adf6eaa0..9b875e6668d5 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/deduction.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/deduction.pass.cpp @@ -16,6 +16,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_copy_move.fail.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_copy_move.fail.cpp index 689d8ec85cea..e937cf4730ec 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_copy_move.fail.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_copy_move.fail.cpp @@ -14,6 +14,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_pointer.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_pointer.pass.cpp index 9ef8ed7876f6..4c66312f84b4 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_pointer.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_pointer.pass.cpp @@ -14,6 +14,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_rv.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_rv.pass.cpp index 8637e3fc8cf2..3bba84a7b519 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_rv.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_rv.pass.cpp @@ -16,6 +16,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp index 203659bf4b63..871aac6eae0f 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include "test_macros.h" #include "count_new.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared_construct.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared_construct.pass.cpp index 908aa7f100cd..145038282373 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared_construct.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared_construct.pass.cpp @@ -20,8 +20,10 @@ #include "test_macros.h" -#include #include +#include +#include +#include static bool construct_called = false; static bool destroy_called = false; diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr.pass.cpp index c722dd0de262..cfb8a1df7fba 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr.pass.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr.pass.cpp index 179c2f5928a4..6baa884f7a46 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr.pass.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weakptr/bad_weak_ptr.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weakptr/bad_weak_ptr.pass.cpp index 49a466b903bc..c4c829a0c525 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weakptr/bad_weak_ptr.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weakptr/bad_weak_ptr.pass.cpp @@ -15,6 +15,7 @@ // bad_weak_ptr(); // }; +#include #include #include #include diff --git a/libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.observers/get_deleter.pass.cpp b/libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.observers/get_deleter.pass.cpp index fc34d17b6fdb..67e55bfa3c89 100644 --- a/libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.observers/get_deleter.pass.cpp +++ b/libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.observers/get_deleter.pass.cpp @@ -14,6 +14,8 @@ #include #include +#include + #include "test_macros.h" struct Deleter { diff --git a/libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.observers/op_subscript.runtime.pass.cpp b/libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.observers/op_subscript.runtime.pass.cpp index 18dfbcc0f9be..28af75afca41 100644 --- a/libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.observers/op_subscript.runtime.pass.cpp +++ b/libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.observers/op_subscript.runtime.pass.cpp @@ -15,6 +15,9 @@ #include #include +// TODO: Move TEST_IS_CONSTANT_EVALUATED into it's own header +#include + #include "test_macros.h" class A { diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp index 6805ad36034f..d6c192d2e054 100644 --- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp +++ b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp index e7a262417cf9..4fef6b99f530 100644 --- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp +++ b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp @@ -10,6 +10,8 @@ #include #include +#include + #include "test_macros.h" struct UserType {}; diff --git a/libcxx/test/support/allocators.h b/libcxx/test/support/allocators.h index f4578da74ffc..0cdaacb7555c 100644 --- a/libcxx/test/support/allocators.h +++ b/libcxx/test/support/allocators.h @@ -10,6 +10,7 @@ #define ALLOCATORS_H #include +#include #include #include diff --git a/libcxx/test/support/container_test_types.h b/libcxx/test/support/container_test_types.h index 38fcd5107d3a..baf1b50cfd8b 100644 --- a/libcxx/test/support/container_test_types.h +++ b/libcxx/test/support/container_test_types.h @@ -86,6 +86,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/support/controlled_allocators.h b/libcxx/test/support/controlled_allocators.h index fa9f04eab364..1144ae4c6ecd 100644 --- a/libcxx/test/support/controlled_allocators.h +++ b/libcxx/test/support/controlled_allocators.h @@ -16,6 +16,8 @@ #include #include #include +#include + #include "test_macros.h" #include "type_id.h" diff --git a/libcxx/test/support/min_allocator.h b/libcxx/test/support/min_allocator.h index a216974f98ce..529c29115f2d 100644 --- a/libcxx/test/support/min_allocator.h +++ b/libcxx/test/support/min_allocator.h @@ -16,6 +16,7 @@ #include #include #include +#include #include "test_macros.h" diff --git a/libcxxabi/src/cxa_guard_impl.h b/libcxxabi/src/cxa_guard_impl.h index 72940cc7e869..f7e79bd9b636 100644 --- a/libcxxabi/src/cxa_guard_impl.h +++ b/libcxxabi/src/cxa_guard_impl.h @@ -54,9 +54,11 @@ # endif #endif +#include <__threading_support> +#include #include #include -#include <__threading_support> + #ifndef _LIBCXXABI_HAS_NO_THREADS # if defined(__ELF__) && defined(_LIBCXXABI_LINK_PTHREAD_LIB) # pragma comment(lib, "pthread") diff --git a/libcxxabi/src/demangle/ItaniumDemangle.h b/libcxxabi/src/demangle/ItaniumDemangle.h index e3f0c6dfecdc..7da823144d87 100644 --- a/libcxxabi/src/demangle/ItaniumDemangle.h +++ b/libcxxabi/src/demangle/ItaniumDemangle.h @@ -26,6 +26,7 @@ #include #include #include +#include #include DEMANGLE_NAMESPACE_BEGIN