diff --git a/libcxx/include/__ranges/iota_view.h b/libcxx/include/__ranges/iota_view.h index 22adc22e69190..03a9e2cc5080b 100644 --- a/libcxx/include/__ranges/iota_view.h +++ b/libcxx/include/__ranges/iota_view.h @@ -58,11 +58,17 @@ struct __get_wider_signed { return type_identity{}; else if constexpr (sizeof(_Int) < sizeof(long)) return type_identity{}; - else + else if constexpr (sizeof(_Int) < sizeof(long long)) return type_identity{}; - - static_assert( - sizeof(_Int) <= sizeof(long long), "Found integer-like type that is bigger than largest integer like type."); +# if _LIBCPP_HAS_INT128 + else if constexpr (sizeof(_Int) <= sizeof(__int128_t)) + return type_identity<__int128_t>{}; +# else + else if constexpr (sizeof(_Int) <= sizeof(long long)) + return type_identity{}; +# endif + else + static_assert(false, "Found integer-like type that is bigger than largest integer like type."); } using type = typename decltype(__call())::type; diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in index 894093b409e11..45950c4141c98 100644 --- a/libcxx/include/module.modulemap.in +++ b/libcxx/include/module.modulemap.in @@ -2359,7 +2359,10 @@ module std [system] { module hash_table { header "__hash_table" } module node_handle { header "__node_handle" } module split_buffer { header "__split_buffer" } - module tree { header "__tree" } + module tree { + header "__tree" + export std.memory.unique_ptr + } module std_mbstate_t { header "__std_mbstate_t.h" export * diff --git a/libcxx/test/libcxx/algorithms/alg.modifying.operations/copy_move_unwrap_reverse.pass.cpp b/libcxx/test/libcxx/algorithms/alg.modifying.operations/copy_move_unwrap_reverse.pass.cpp index 2a85e7b5ddcc3..22444624dcba7 100644 --- a/libcxx/test/libcxx/algorithms/alg.modifying.operations/copy_move_unwrap_reverse.pass.cpp +++ b/libcxx/test/libcxx/algorithms/alg.modifying.operations/copy_move_unwrap_reverse.pass.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include "test_iterators.h" diff --git a/libcxx/test/libcxx/memory/allocation_guard.pass.cpp b/libcxx/test/libcxx/memory/allocation_guard.pass.cpp index 493ebf044187c..a7c93972d656d 100644 --- a/libcxx/test/libcxx/memory/allocation_guard.pass.cpp +++ b/libcxx/test/libcxx/memory/allocation_guard.pass.cpp @@ -17,6 +17,8 @@ #include <__memory/allocation_guard.h> #include +#include +#include #include #include diff --git a/libcxx/test/libcxx/memory/uninitialized_allocator_copy.pass.cpp b/libcxx/test/libcxx/memory/uninitialized_allocator_copy.pass.cpp index 679ee86844687..1d127f947c1da 100644 --- a/libcxx/test/libcxx/memory/uninitialized_allocator_copy.pass.cpp +++ b/libcxx/test/libcxx/memory/uninitialized_allocator_copy.pass.cpp @@ -11,6 +11,7 @@ // ensure that __uninitialized_allocator_copy calls the proper construct and destruct functions #include +#include #include #include diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.contains/ranges.contains_subrange.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.contains/ranges.contains_subrange.pass.cpp index 890ac23fff832..8354894493e21 100644 --- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.contains/ranges.contains_subrange.pass.cpp +++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.contains/ranges.contains_subrange.pass.cpp @@ -32,6 +32,7 @@ #include "almost_satisfies_types.h" #include "test_iterators.h" +#include "type_algorithms.h" struct NotEqualityComparable {}; diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count.pass.cpp index e696dcdb34351..80f76150318ae 100644 --- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count.pass.cpp +++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count.pass.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include "sized_allocator.h" diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/ranges.count.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/ranges.count.pass.cpp index 2c1346a743746..9d9d7ed5ab177 100644 --- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/ranges.count.pass.cpp +++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.count/ranges.count.pass.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp index 199e6a786e5ba..76c62ffa760ad 100644 --- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp +++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp @@ -25,8 +25,10 @@ #include #include #include + #include "almost_satisfies_types.h" #include "test_iterators.h" +#include "type_algorithms.h" using namespace std::chrono; diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.starts_with/ranges.starts_with.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.starts_with/ranges.starts_with.pass.cpp index 0f2284edde81c..172fa82fccc29 100644 --- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.starts_with/ranges.starts_with.pass.cpp +++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.starts_with/ranges.starts_with.pass.cpp @@ -27,6 +27,7 @@ #include "almost_satisfies_types.h" #include "test_iterators.h" +#include "type_algorithms.h" template concept HasStartsWithIt = requires(Iter1 first1, Sent1 last1, Iter2 first2, Sent2 last2) { diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.partitions/pstl.is_partitioned.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.partitions/pstl.is_partitioned.pass.cpp index a80e2f6ddc637..b64242dfc14b6 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.partitions/pstl.is_partitioned.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.partitions/pstl.is_partitioned.pass.cpp @@ -20,6 +20,7 @@ #include "test_iterators.h" #include "test_execution_policies.h" +#include "type_algorithms.h" template struct Test { diff --git a/libcxx/test/std/containers/associative/map/map.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/associative/map/map.cons/dtor_noexcept.pass.cpp index 8497b942ad8eb..c9f7f281391f5 100644 --- a/libcxx/test/std/containers/associative/map/map.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/associative/map/map.cons/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/associative/multimap/multimap.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/associative/multimap/multimap.cons/dtor_noexcept.pass.cpp index 62afae92b6902..c757befb9211c 100644 --- a/libcxx/test/std/containers/associative/multimap/multimap.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/associative/multimap/multimap.cons/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/associative/multiset/multiset.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/associative/multiset/multiset.cons/dtor_noexcept.pass.cpp index 987eca0706076..bf5d256e19a0f 100644 --- a/libcxx/test/std/containers/associative/multiset/multiset.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/associative/multiset/multiset.cons/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/associative/set/set.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/associative/set/set.cons/dtor_noexcept.pass.cpp index 63c0433477414..a382ce629d284 100644 --- a/libcxx/test/std/containers/associative/set/set.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/associative/set/set.cons/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.cons/copy_assign.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.cons/copy_assign.pass.cpp index 8aa2e7bc539fd..c98803f6cce9d 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.cons/copy_assign.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.cons/copy_assign.pass.cpp @@ -12,6 +12,7 @@ // flat_map& operator=(const flat_map& m); +#include #include #include #include diff --git a/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.cons/dtor_noexcept.pass.cpp index 4562b01bc8c42..9e8198443387b 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.cons/dtor_noexcept.pass.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/container.adaptors/flat.map/helpers.h b/libcxx/test/std/containers/container.adaptors/flat.map/helpers.h index 932f330db829e..445de4fcb6eae 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.map/helpers.h +++ b/libcxx/test/std/containers/container.adaptors/flat.map/helpers.h @@ -15,6 +15,7 @@ #include #include #include +#include #include "../flat_helpers.h" #include "test_allocator.h" diff --git a/libcxx/test/std/containers/container.adaptors/flat.multimap/flat.multimap.cons/copy_assign.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.multimap/flat.multimap.cons/copy_assign.pass.cpp index fd57a1061b615..ed040d5a3625a 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.multimap/flat.multimap.cons/copy_assign.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.multimap/flat.multimap.cons/copy_assign.pass.cpp @@ -12,6 +12,7 @@ // flat_multimap& operator=(const flat_multimap& m); +#include #include #include #include diff --git a/libcxx/test/std/containers/container.adaptors/flat.multimap/flat.multimap.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.multimap/flat.multimap.cons/dtor_noexcept.pass.cpp index 104d56755bd76..2534a4748aa76 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.multimap/flat.multimap.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.multimap/flat.multimap.cons/dtor_noexcept.pass.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include "test_macros.h" diff --git a/libcxx/test/std/containers/container.adaptors/flat.multimap/helpers.h b/libcxx/test/std/containers/container.adaptors/flat.multimap/helpers.h index f3edd3b3a0242..ccb3218ebfc41 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.multimap/helpers.h +++ b/libcxx/test/std/containers/container.adaptors/flat.multimap/helpers.h @@ -15,6 +15,7 @@ #include #include #include +#include #include "../flat_helpers.h" #include "test_allocator.h" diff --git a/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/compare.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/compare.pass.cpp index 6b68589e6814f..867de2d83fc34 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/compare.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/compare.pass.cpp @@ -14,6 +14,7 @@ // template // flat_multiset(const key_compare& comp, const Alloc& a); +#include #include #include #include diff --git a/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/copy_assign.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/copy_assign.pass.cpp index 2b6176ac915a7..3f211d683456d 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/copy_assign.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/copy_assign.pass.cpp @@ -13,8 +13,10 @@ // flat_multiset& operator=(const flat_multiset& m); #include +#include #include #include +#include #include #include "operator_hijacker.h" diff --git a/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/dtor_noexcept.pass.cpp index f852f2f85572c..224ac0f92b515 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.multiset/flat.multiset.cons/dtor_noexcept.pass.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include "test_macros.h" diff --git a/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/copy_assign.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/copy_assign.pass.cpp index 59caa9c1f8a48..33fe457d7c1e3 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/copy_assign.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/copy_assign.pass.cpp @@ -13,6 +13,7 @@ // flat_set& operator=(const flat_set& m); #include +#include #include #include #include diff --git a/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/dtor_noexcept.pass.cpp index 810b13b0a5b0b..1caf58fff72d3 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/dtor_noexcept.pass.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include "test_macros.h" diff --git a/libcxx/test/std/containers/container.adaptors/stack/stack.cons/ctor_iterators.pass.cpp b/libcxx/test/std/containers/container.adaptors/stack/stack.cons/ctor_iterators.pass.cpp index 5981f9189dbfb..afd5a63895b80 100644 --- a/libcxx/test/std/containers/container.adaptors/stack/stack.cons/ctor_iterators.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/stack/stack.cons/ctor_iterators.pass.cpp @@ -15,6 +15,7 @@ #include #include +#include #include "test_allocator.h" diff --git a/libcxx/test/std/containers/container.requirements/container.requirements.general/allocator_move.pass.cpp b/libcxx/test/std/containers/container.requirements/container.requirements.general/allocator_move.pass.cpp index 5de5579d13067..e927bfc83aea4 100644 --- a/libcxx/test/std/containers/container.requirements/container.requirements.general/allocator_move.pass.cpp +++ b/libcxx/test/std/containers/container.requirements/container.requirements.general/allocator_move.pass.cpp @@ -13,6 +13,7 @@ // belonging to the container being moved. Such move construction of the // allocator shall not exit via an exception. +#include #include #include #include diff --git a/libcxx/test/std/containers/sequences/deque/deque.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/sequences/deque/deque.cons/dtor_noexcept.pass.cpp index f0a839484f9dc..338a0fa6b832d 100644 --- a/libcxx/test/std/containers/sequences/deque/deque.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/sequences/deque/deque.cons/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/dtor_noexcept.pass.cpp index 64c60af1fdcb7..8d474cf966339 100644 --- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/sequences/list/list.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/sequences/list/list.cons/dtor_noexcept.pass.cpp index 44e6ddd722a70..4ebe19fafef29 100644 --- a/libcxx/test/std/containers/sequences/list/list.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/sequences/list/list.cons/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/sequences/vector.bool/assign_move.pass.cpp b/libcxx/test/std/containers/sequences/vector.bool/assign_move.pass.cpp index 8791380b134c7..2200367fb27f7 100644 --- a/libcxx/test/std/containers/sequences/vector.bool/assign_move.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector.bool/assign_move.pass.cpp @@ -14,6 +14,7 @@ // vector& operator=(vector&& c); #include +#include #include #include "min_allocator.h" diff --git a/libcxx/test/std/containers/sequences/vector.bool/default_noexcept.pass.cpp b/libcxx/test/std/containers/sequences/vector.bool/default_noexcept.pass.cpp index 0801709625090..a95d358248f56 100644 --- a/libcxx/test/std/containers/sequences/vector.bool/default_noexcept.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector.bool/default_noexcept.pass.cpp @@ -16,8 +16,9 @@ // For vector<>, this was added to the standard by N4258, // but vector was not changed. -#include #include +#include +#include #include "test_macros.h" #include "test_allocator.h" diff --git a/libcxx/test/std/containers/sequences/vector.bool/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/sequences/vector.bool/dtor_noexcept.pass.cpp index f8f3c76f8c3d9..6a6ca6b36ce5d 100644 --- a/libcxx/test/std/containers/sequences/vector.bool/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector.bool/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "test_allocator.h" diff --git a/libcxx/test/std/containers/sequences/vector.bool/move_assign_noexcept.pass.cpp b/libcxx/test/std/containers/sequences/vector.bool/move_assign_noexcept.pass.cpp index 5a69213c3b4ef..e5add73b167d0 100644 --- a/libcxx/test/std/containers/sequences/vector.bool/move_assign_noexcept.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector.bool/move_assign_noexcept.pass.cpp @@ -17,8 +17,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "test_allocator.h" diff --git a/libcxx/test/std/containers/sequences/vector.bool/move_noexcept.pass.cpp b/libcxx/test/std/containers/sequences/vector.bool/move_noexcept.pass.cpp index d0d231f48953a..5bdae01f871f9 100644 --- a/libcxx/test/std/containers/sequences/vector.bool/move_noexcept.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector.bool/move_noexcept.pass.cpp @@ -15,8 +15,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "test_allocator.h" diff --git a/libcxx/test/std/containers/sequences/vector/vector.cons/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/sequences/vector/vector.cons/dtor_noexcept.pass.cpp index 4a7e2cf445676..331b360c2fa1d 100644 --- a/libcxx/test/std/containers/sequences/vector/vector.cons/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector/vector.cons/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/dtor_noexcept.pass.cpp index 5797599b1f9e4..cf148fd75732b 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/dtor_noexcept.pass.cpp index 6fdc9e3eb7f5e..2771e64b36ea8 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/dtor_noexcept.pass.cpp index 32c757e16d344..c48c2865b844f 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/dtor_noexcept.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/dtor_noexcept.pass.cpp index 17cfae0f989c7..2939e36dd6e0d 100644 --- a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/dtor_noexcept.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/dtor_noexcept.pass.cpp @@ -12,8 +12,9 @@ // UNSUPPORTED: c++03 -#include #include +#include +#include #include "test_macros.h" #include "MoveOnly.h" diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp index b3d87ee630873..65c4dabe47d66 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp @@ -32,6 +32,7 @@ #include #include #include +#include // On Windows, the append function converts all inputs (pointers, iterators) // to an intermediate path object, causing allocations in cases where no diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp index 96de72b355f3f..d4a32735dc05a 100644 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp @@ -39,6 +39,7 @@ #include #include #include +#include // On Windows, charset conversions cause allocations in the path class in // cases where no allocations are done on other platforms. diff --git a/libcxx/test/std/numerics/c.math/signbit.pass.cpp b/libcxx/test/std/numerics/c.math/signbit.pass.cpp index 7571ced2e4431..4f1119b95f625 100644 --- a/libcxx/test/std/numerics/c.math/signbit.pass.cpp +++ b/libcxx/test/std/numerics/c.math/signbit.pass.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "test_macros.h" #include "type_algorithms.h" diff --git a/libcxx/test/std/ranges/range.factories/range.iota.view/indices.pass.cpp b/libcxx/test/std/ranges/range.factories/range.iota.view/indices.pass.cpp index d92b6cb876a40..08a0774298f68 100644 --- a/libcxx/test/std/ranges/range.factories/range.iota.view/indices.pass.cpp +++ b/libcxx/test/std/ranges/range.factories/range.iota.view/indices.pass.cpp @@ -18,7 +18,6 @@ #include #include "test_macros.h" -#define TEST_HAS_NO_INT128 // Size cannot be larger than 64 bits #include "type_algorithms.h" #include "types.h" diff --git a/libcxx/test/std/ranges/range.factories/range.iota.view/iterator/member_typedefs.compile.pass.cpp b/libcxx/test/std/ranges/range.factories/range.iota.view/iterator/member_typedefs.compile.pass.cpp index c2f7fd14042a8..fea532743d5c4 100644 --- a/libcxx/test/std/ranges/range.factories/range.iota.view/iterator/member_typedefs.compile.pass.cpp +++ b/libcxx/test/std/ranges/range.factories/range.iota.view/iterator/member_typedefs.compile.pass.cpp @@ -106,7 +106,11 @@ void test() { // Same as below, if there is no type larger than long, we can just use that. static_assert(sizeof(Iter::difference_type) >= sizeof(long)); static_assert(std::is_signed_v); +#ifndef TEST_HAS_NO_INT128 + LIBCPP_STATIC_ASSERT(std::same_as); +#else LIBCPP_STATIC_ASSERT(std::same_as); +#endif } { const std::ranges::iota_view io(0); @@ -118,7 +122,11 @@ void test() { // https://eel.is/c++draft/range.iota.view#1.3 static_assert(sizeof(Iter::difference_type) >= sizeof(long long)); static_assert(std::is_signed_v); +#ifndef TEST_HAS_NO_INT128 + LIBCPP_STATIC_ASSERT(std::same_as); +#else LIBCPP_STATIC_ASSERT(std::same_as); +#endif } { const std::ranges::iota_view io; diff --git a/libcxx/test/std/re/re.results/re.results.const/move.pass.cpp b/libcxx/test/std/re/re.results/re.results.const/move.pass.cpp index 0806edef1429b..9078d575d531c 100644 --- a/libcxx/test/std/re/re.results/re.results.const/move.pass.cpp +++ b/libcxx/test/std/re/re.results/re.results.const/move.pass.cpp @@ -14,8 +14,10 @@ // // Additionally, the stored Allocator value is move constructed from m.get_allocator(). -#include #include +#include +#include + #include "test_macros.h" #include "test_allocator.h" diff --git a/libcxx/test/std/strings/basic.string/string.cons/dtor.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/dtor.pass.cpp index e9f174068473d..d5c1f4d9348b8 100644 --- a/libcxx/test/std/strings/basic.string/string.cons/dtor.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/dtor.pass.cpp @@ -12,11 +12,12 @@ // ~basic_string() // implied noexcept; // constexpr since C++20 -#include #include +#include +#include -#include "test_macros.h" #include "test_allocator.h" +#include "test_macros.h" template struct throwing_alloc { diff --git a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp index d9176da63d0dc..d47c9dfded226 100644 --- a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include "test_macros.h" #include "test_allocator.h" diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp index 3a6f84f2699ac..a19564b98b283 100644 --- a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp @@ -19,17 +19,18 @@ // The deduction guide shall not participate in overload resolution if Allocator // is a type that does not qualify as an allocator. -#include -#include +#include +#include #include #include +#include +#include #include -#include -#include +#include -#include "test_macros.h" -#include "test_allocator.h" #include "min_allocator.h" +#include "test_allocator.h" +#include "test_macros.h" template struct CanDeduce : std::false_type {}; diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp index 08e696b7a091b..e36503d92be18 100644 --- a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp @@ -25,15 +25,16 @@ // The deduction guide shall not participate in overload resolution if Allocator // is a type that does not qualify as an allocator. -#include -#include -#include #include #include +#include +#include +#include +#include -#include "test_macros.h" -#include "test_allocator.h" #include "min_allocator.h" +#include "test_allocator.h" +#include "test_macros.h" template struct CanDeduce : std::false_type {}; diff --git a/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/make_obj_using_allocator.pass.cpp b/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/make_obj_using_allocator.pass.cpp index 1f605140b4def..744e530191cdc 100644 --- a/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/make_obj_using_allocator.pass.cpp +++ b/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/make_obj_using_allocator.pass.cpp @@ -14,6 +14,7 @@ // test_memory_resource requires RTTI for dynamic_cast // UNSUPPORTED: no-rtti +#include #include #include #include diff --git a/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/uninitialized_construct_using_allocator.pass.cpp b/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/uninitialized_construct_using_allocator.pass.cpp index 07260e540d957..329698c4371c0 100644 --- a/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/uninitialized_construct_using_allocator.pass.cpp +++ b/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/uninitialized_construct_using_allocator.pass.cpp @@ -14,6 +14,7 @@ // test_memory_resource requires RTTI for dynamic_cast // UNSUPPORTED: no-rtti +#include #include #include #include diff --git a/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/uses_allocator_construction_args.pass.cpp b/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/uses_allocator_construction_args.pass.cpp index 93a445d7c9e06..aa3a5e8a28685 100644 --- a/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/uses_allocator_construction_args.pass.cpp +++ b/libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/uses_allocator_construction_args.pass.cpp @@ -14,10 +14,12 @@ // test_memory_resource requires RTTI for dynamic_cast // UNSUPPORTED: no-rtti +#include #include #include #include #include +#include #include #include "common.h" diff --git a/libcxx/test/support/module.modulemap b/libcxx/test/support/module.modulemap new file mode 100644 index 0000000000000..75ae8c4221ae0 --- /dev/null +++ b/libcxx/test/support/module.modulemap @@ -0,0 +1,10 @@ + +module test_config { + module test_macros { textual header "test_macros.h" } +} + +module test { + module double_move_tracker { header "double_move_tracker.h" } + module test_allocator { header "test_allocator.h" } + module type_algorithms { header "type_algorithms.h" } +}