Skip to content

[libc++] Granularize <new> includes #119964

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 17, 2024

Conversation

philnik777
Copy link
Contributor

No description provided.

@philnik777 philnik777 force-pushed the granularize_new_includes branch from 8abbd55 to 0dc9fa7 Compare December 14, 2024 12:24
@philnik777 philnik777 marked this pull request as ready for review December 17, 2024 10:29
@philnik777 philnik777 requested review from a team as code owners December 17, 2024 10:29
@philnik777 philnik777 merged commit 59890c1 into llvm:main Dec 17, 2024
68 checks passed
@llvmbot llvmbot added libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. libc++abi libc++abi C++ Runtime Library. Not libc++. labels Dec 17, 2024
@philnik777 philnik777 deleted the granularize_new_includes branch December 17, 2024 10:29
@llvmbot
Copy link
Member

llvmbot commented Dec 17, 2024

@llvm/pr-subscribers-libcxx

Author: Nikolas Klauser (philnik777)

Changes

Patch is 32.64 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/119964.diff

33 Files Affected:

  • (modified) libcxx/include/__algorithm/inplace_merge.h (-1)
  • (modified) libcxx/include/__algorithm/stable_partition.h (-1)
  • (modified) libcxx/include/__algorithm/stable_sort.h (-1)
  • (modified) libcxx/include/__exception/exception_ptr.h (-1)
  • (modified) libcxx/include/__functional/function.h (-1)
  • (modified) libcxx/include/__memory/allocator.h (+2-1)
  • (modified) libcxx/include/__memory/builtin_new_allocator.h (+1-1)
  • (modified) libcxx/include/__memory/ranges_construct_at.h (-1)
  • (modified) libcxx/include/__memory/ranges_uninitialized_algorithms.h (-1)
  • (modified) libcxx/include/__memory/raw_storage_iterator.h (-1)
  • (modified) libcxx/include/__memory/shared_ptr.h (-1)
  • (modified) libcxx/include/__memory/uninitialized_algorithms.h (-1)
  • (modified) libcxx/include/__memory/unique_temporary_buffer.h (+2-1)
  • (modified) libcxx/include/__memory_resource/polymorphic_allocator.h (+2-1)
  • (modified) libcxx/include/__ostream/basic_ostream.h (+1-1)
  • (modified) libcxx/include/__pstl/backends/libdispatch.h (+1-1)
  • (modified) libcxx/include/__pstl/cpu_algos/transform_reduce.h (-1)
  • (modified) libcxx/include/__pstl/handle_exception.h (+1-1)
  • (modified) libcxx/include/__utility/no_destroy.h (+1-1)
  • (modified) libcxx/include/__utility/small_buffer.h (+2-1)
  • (modified) libcxx/include/exception (+1)
  • (modified) libcxx/include/future (-1)
  • (modified) libcxx/include/locale (+1-1)
  • (modified) libcxx/include/map (+1-1)
  • (modified) libcxx/include/module.modulemap (+5-1)
  • (modified) libcxx/include/optional (-1)
  • (modified) libcxx/include/stdexcept (+1)
  • (modified) libcxx/include/unordered_map (+1-1)
  • (modified) libcxx/include/valarray (-1)
  • (modified) libcxx/include/variant (-1)
  • (modified) libcxx/test/libcxx/transitive_includes/cxx23.csv (+1-51)
  • (modified) libcxx/test/libcxx/transitive_includes/cxx26.csv (-51)
  • (modified) libcxxabi/src/cxa_default_handlers.cpp (+1)
diff --git a/libcxx/include/__algorithm/inplace_merge.h b/libcxx/include/__algorithm/inplace_merge.h
index ad3fe6a7a505d9..e0ccdab993da12 100644
--- a/libcxx/include/__algorithm/inplace_merge.h
+++ b/libcxx/include/__algorithm/inplace_merge.h
@@ -29,7 +29,6 @@
 #include <__memory/unique_temporary_buffer.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 
 #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 0438f589a39d7a..2ba7239a3a0397 100644
--- a/libcxx/include/__algorithm/stable_partition.h
+++ b/libcxx/include/__algorithm/stable_partition.h
@@ -22,7 +22,6 @@
 #include <__type_traits/remove_cvref.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__algorithm/stable_sort.h b/libcxx/include/__algorithm/stable_sort.h
index 43f591ac02b01d..1111f5509bc384 100644
--- a/libcxx/include/__algorithm/stable_sort.h
+++ b/libcxx/include/__algorithm/stable_sort.h
@@ -24,7 +24,6 @@
 #include <__type_traits/is_trivially_assignable.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__exception/exception_ptr.h b/libcxx/include/__exception/exception_ptr.h
index c43c005603dd7a..7df46a0e94dce0 100644
--- a/libcxx/include/__exception/exception_ptr.h
+++ b/libcxx/include/__exception/exception_ptr.h
@@ -16,7 +16,6 @@
 #include <__memory/construct_at.h>
 #include <__type_traits/decay.h>
 #include <cstdlib>
-#include <new>
 #include <typeinfo>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/__functional/function.h b/libcxx/include/__functional/function.h
index 543be05f10f330..06d3225a6e22d3 100644
--- a/libcxx/include/__functional/function.h
+++ b/libcxx/include/__functional/function.h
@@ -38,7 +38,6 @@
 #include <__utility/piecewise_construct.h>
 #include <__utility/swap.h>
 #include <__verbose_abort>
-#include <new>
 #include <tuple>
 #include <typeinfo>
 
diff --git a/libcxx/include/__memory/allocator.h b/libcxx/include/__memory/allocator.h
index 1fcaf6402667e1..a7066885a978a6 100644
--- a/libcxx/include/__memory/allocator.h
+++ b/libcxx/include/__memory/allocator.h
@@ -16,13 +16,14 @@
 #include <__memory/addressof.h>
 #include <__memory/allocate_at_least.h>
 #include <__memory/allocator_traits.h>
+#include <__new/allocate.h>
+#include <__new/exceptions.h>
 #include <__type_traits/is_const.h>
 #include <__type_traits/is_constant_evaluated.h>
 #include <__type_traits/is_same.h>
 #include <__type_traits/is_void.h>
 #include <__type_traits/is_volatile.h>
 #include <__utility/forward.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory/builtin_new_allocator.h b/libcxx/include/__memory/builtin_new_allocator.h
index b1611b12bff03e..cde1a6025a9a70 100644
--- a/libcxx/include/__memory/builtin_new_allocator.h
+++ b/libcxx/include/__memory/builtin_new_allocator.h
@@ -12,7 +12,7 @@
 #include <__config>
 #include <__cstddef/size_t.h>
 #include <__memory/unique_ptr.h>
-#include <new>
+#include <__new/allocate.h>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory/ranges_construct_at.h b/libcxx/include/__memory/ranges_construct_at.h
index b7523d4ba4b81b..35ed7965100038 100644
--- a/libcxx/include/__memory/ranges_construct_at.h
+++ b/libcxx/include/__memory/ranges_construct_at.h
@@ -22,7 +22,6 @@
 #include <__utility/declval.h>
 #include <__utility/forward.h>
 #include <__utility/move.h>
-#include <new>
 
 #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 4815ac6e5de99e..57a7a4616826e5 100644
--- a/libcxx/include/__memory/ranges_uninitialized_algorithms.h
+++ b/libcxx/include/__memory/ranges_uninitialized_algorithms.h
@@ -25,7 +25,6 @@
 #include <__ranges/dangling.h>
 #include <__type_traits/remove_reference.h>
 #include <__utility/move.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory/raw_storage_iterator.h b/libcxx/include/__memory/raw_storage_iterator.h
index 2ee4c074d8d337..a81d93275f7c49 100644
--- a/libcxx/include/__memory/raw_storage_iterator.h
+++ b/libcxx/include/__memory/raw_storage_iterator.h
@@ -16,7 +16,6 @@
 #include <__iterator/iterator_traits.h>
 #include <__memory/addressof.h>
 #include <__utility/move.h>
-#include <new>
 
 #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 4fa75af4ccc86d..97e4031499ed5e 100644
--- a/libcxx/include/__memory/shared_ptr.h
+++ b/libcxx/include/__memory/shared_ptr.h
@@ -57,7 +57,6 @@
 #include <__utility/move.h>
 #include <__utility/swap.h>
 #include <__verbose_abort>
-#include <new>
 #include <typeinfo>
 #if _LIBCPP_HAS_ATOMIC_HEADER
 #  include <__atomic/memory_order.h>
diff --git a/libcxx/include/__memory/uninitialized_algorithms.h b/libcxx/include/__memory/uninitialized_algorithms.h
index 25d192c7718857..9587f01f64d58f 100644
--- a/libcxx/include/__memory/uninitialized_algorithms.h
+++ b/libcxx/include/__memory/uninitialized_algorithms.h
@@ -37,7 +37,6 @@
 #include <__utility/exception_guard.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory/unique_temporary_buffer.h b/libcxx/include/__memory/unique_temporary_buffer.h
index 4f47c84e2f8dbe..ca6292338c0056 100644
--- a/libcxx/include/__memory/unique_temporary_buffer.h
+++ b/libcxx/include/__memory/unique_temporary_buffer.h
@@ -16,8 +16,9 @@
 #include <__cstddef/ptrdiff_t.h>
 #include <__memory/allocator.h>
 #include <__memory/unique_ptr.h>
+#include <__new/allocate.h>
+#include <__new/global_new_delete.h>
 #include <__type_traits/is_constant_evaluated.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory_resource/polymorphic_allocator.h b/libcxx/include/__memory_resource/polymorphic_allocator.h
index 30fa5c2170d502..2dec9788852c2b 100644
--- a/libcxx/include/__memory_resource/polymorphic_allocator.h
+++ b/libcxx/include/__memory_resource/polymorphic_allocator.h
@@ -15,9 +15,10 @@
 #include <__cstddef/max_align_t.h>
 #include <__fwd/pair.h>
 #include <__memory_resource/memory_resource.h>
+#include <__new/exceptions.h>
+#include <__new/placement_new_delete.h>
 #include <__utility/exception_guard.h>
 #include <limits>
-#include <new>
 #include <tuple>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/__ostream/basic_ostream.h b/libcxx/include/__ostream/basic_ostream.h
index ad43c72a3c2eae..6d24171bc0d6cf 100644
--- a/libcxx/include/__ostream/basic_ostream.h
+++ b/libcxx/include/__ostream/basic_ostream.h
@@ -16,6 +16,7 @@
 #  include <__exception/operations.h>
 #  include <__memory/shared_ptr.h>
 #  include <__memory/unique_ptr.h>
+#  include <__new/exceptions.h>
 #  include <__ostream/put_character_sequence.h>
 #  include <__system_error/error_code.h>
 #  include <__type_traits/conjunction.h>
@@ -26,7 +27,6 @@
 #  include <bitset>
 #  include <ios>
 #  include <locale>
-#  include <new> // for __throw_bad_alloc
 #  include <streambuf>
 #  include <string_view>
 
diff --git a/libcxx/include/__pstl/backends/libdispatch.h b/libcxx/include/__pstl/backends/libdispatch.h
index 701367b505c8b7..4c63c4c8442074 100644
--- a/libcxx/include/__pstl/backends/libdispatch.h
+++ b/libcxx/include/__pstl/backends/libdispatch.h
@@ -23,6 +23,7 @@
 #include <__memory/allocator.h>
 #include <__memory/construct_at.h>
 #include <__memory/unique_ptr.h>
+#include <__new/exceptions.h>
 #include <__numeric/reduce.h>
 #include <__pstl/backend_fwd.h>
 #include <__pstl/cpu_algos/any_of.h>
@@ -38,7 +39,6 @@
 #include <__utility/exception_guard.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 #include <optional>
 
 _LIBCPP_PUSH_MACROS
diff --git a/libcxx/include/__pstl/cpu_algos/transform_reduce.h b/libcxx/include/__pstl/cpu_algos/transform_reduce.h
index e9f622d832cd5c..abd9d42a6f2e65 100644
--- a/libcxx/include/__pstl/cpu_algos/transform_reduce.h
+++ b/libcxx/include/__pstl/cpu_algos/transform_reduce.h
@@ -20,7 +20,6 @@
 #include <__type_traits/is_arithmetic.h>
 #include <__type_traits/is_execution_policy.h>
 #include <__utility/move.h>
-#include <new>
 #include <optional>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/__pstl/handle_exception.h b/libcxx/include/__pstl/handle_exception.h
index 57dfcfde4554f8..3b5fca86902b0a 100644
--- a/libcxx/include/__pstl/handle_exception.h
+++ b/libcxx/include/__pstl/handle_exception.h
@@ -10,9 +10,9 @@
 #define _LIBCPP___PSTL_HANDLE_EXCEPTION_H
 
 #include <__config>
+#include <__new/exceptions.h>
 #include <__utility/forward.h>
 #include <__utility/move.h>
-#include <new> // __throw_bad_alloc
 #include <optional>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/__utility/no_destroy.h b/libcxx/include/__utility/no_destroy.h
index 8edd194577d7c7..16f424ae119c4b 100644
--- a/libcxx/include/__utility/no_destroy.h
+++ b/libcxx/include/__utility/no_destroy.h
@@ -10,9 +10,9 @@
 #define _LIBCPP___UTILITY_NO_DESTROY_H
 
 #include <__config>
+#include <__new/placement_new_delete.h>
 #include <__type_traits/is_constant_evaluated.h>
 #include <__utility/forward.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__utility/small_buffer.h b/libcxx/include/__utility/small_buffer.h
index 405c0aed459632..ff6e7e76f14f52 100644
--- a/libcxx/include/__utility/small_buffer.h
+++ b/libcxx/include/__utility/small_buffer.h
@@ -13,12 +13,13 @@
 #include <__cstddef/byte.h>
 #include <__cstddef/size_t.h>
 #include <__memory/construct_at.h>
+#include <__new/allocate.h>
+#include <__new/launder.h>
 #include <__type_traits/decay.h>
 #include <__type_traits/is_trivially_constructible.h>
 #include <__type_traits/is_trivially_destructible.h>
 #include <__utility/exception_guard.h>
 #include <__utility/forward.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/exception b/libcxx/include/exception
index f0eaba1295fa3d..6565f1b4641d1d 100644
--- a/libcxx/include/exception
+++ b/libcxx/include/exception
@@ -93,6 +93,7 @@ template <class E> void rethrow_if_nested(const E& e);
 #  if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
 #    include <cstddef>
 #    include <cstdlib>
+#    include <new>
 #    include <type_traits>
 #  endif
 #endif // 0
diff --git a/libcxx/include/future b/libcxx/include/future
index dacf2c10a1990b..3a612d80bc85c6 100644
--- a/libcxx/include/future
+++ b/libcxx/include/future
@@ -407,7 +407,6 @@ template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc>;
 #    include <__utility/forward.h>
 #    include <__utility/move.h>
 #    include <__utility/swap.h>
-#    include <new>
 #    include <stdexcept>
 #    include <tuple>
 #    include <version>
diff --git a/libcxx/include/locale b/libcxx/include/locale
index 65b1200df061be..8421dc696106a6 100644
--- a/libcxx/include/locale
+++ b/libcxx/include/locale
@@ -207,6 +207,7 @@ template <class charT> class messages_byname;
 #    include <__locale>
 #    include <__locale_dir/pad_and_output.h>
 #    include <__memory/unique_ptr.h>
+#    include <__new/exceptions.h>
 #    include <__type_traits/make_unsigned.h>
 #    include <cerrno>
 #    include <cstdio>
@@ -214,7 +215,6 @@ template <class charT> class messages_byname;
 #    include <ctime>
 #    include <ios>
 #    include <limits>
-#    include <new>
 #    include <streambuf>
 #    include <version>
 
diff --git a/libcxx/include/map b/libcxx/include/map
index 4e964d2265b471..90f807f89bdcf6 100644
--- a/libcxx/include/map
+++ b/libcxx/include/map
@@ -591,6 +591,7 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred);  // C++20
 #  include <__memory/pointer_traits.h>
 #  include <__memory/unique_ptr.h>
 #  include <__memory_resource/polymorphic_allocator.h>
+#  include <__new/launder.h>
 #  include <__node_handle>
 #  include <__ranges/concepts.h>
 #  include <__ranges/container_compatible_range.h>
@@ -604,7 +605,6 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred);  // C++20
 #  include <__utility/pair.h>
 #  include <__utility/piecewise_construct.h>
 #  include <__utility/swap.h>
-#  include <new> // for std::launder
 #  include <stdexcept>
 #  include <tuple>
 #  include <version>
diff --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap
index 8d862e9f9ba361..4d1f1a727cc3d9 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -1607,7 +1607,11 @@ module std [system] {
     module allocate             { header "__new/allocate.h" }
     module destroying_delete_t  { header "__new/destroying_delete_t.h" }
     module exceptions           { header "__new/exceptions.h" }
-    module global_new_delete    { header "__new/global_new_delete.h" }
+    module global_new_delete    {
+      header "__new/global_new_delete.h"
+
+      export std.new.nothrow_t
+    }
     module interference_size    { header "__new/interference_size.h" }
     module launder              { header "__new/launder.h" }
     module new_handler          { header "__new/new_handler.h" }
diff --git a/libcxx/include/optional b/libcxx/include/optional
index b19c7a21aea372..1556b8b8fd942a 100644
--- a/libcxx/include/optional
+++ b/libcxx/include/optional
@@ -228,7 +228,6 @@ namespace std {
 #  include <__utility/swap.h>
 #  include <__verbose_abort>
 #  include <initializer_list>
-#  include <new>
 #  include <version>
 
 // standard-mandated includes
diff --git a/libcxx/include/stdexcept b/libcxx/include/stdexcept
index b3d805437a02ff..58c55092026a92 100644
--- a/libcxx/include/stdexcept
+++ b/libcxx/include/stdexcept
@@ -284,6 +284,7 @@ _LIBCPP_END_NAMESPACE_STD
 #    include <cstdlib>
 #    include <exception>
 #    include <iosfwd>
+#    include <new>
 #  endif
 #endif // 0
 
diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map
index 5d5979b28ff0e6..e55b7b7ef14036 100644
--- a/libcxx/include/unordered_map
+++ b/libcxx/include/unordered_map
@@ -602,6 +602,7 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
 #  include <__memory/pointer_traits.h>
 #  include <__memory/unique_ptr.h>
 #  include <__memory_resource/polymorphic_allocator.h>
+#  include <__new/launder.h>
 #  include <__node_handle>
 #  include <__ranges/concepts.h>
 #  include <__ranges/container_compatible_range.h>
@@ -615,7 +616,6 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
 #  include <__type_traits/type_identity.h>
 #  include <__utility/forward.h>
 #  include <__utility/pair.h>
-#  include <new> // launder
 #  include <stdexcept>
 #  include <tuple>
 #  include <version>
diff --git a/libcxx/include/valarray b/libcxx/include/valarray
index af916096b5ef9d..ef94dde9bc887c 100644
--- a/libcxx/include/valarray
+++ b/libcxx/include/valarray
@@ -364,7 +364,6 @@ template <class T> unspecified2 end(const valarray<T>& v);
 #  include <__utility/move.h>
 #  include <__utility/swap.h>
 #  include <cmath>
-#  include <new>
 #  include <version>
 
 // standard-mandated includes
diff --git a/libcxx/include/variant b/libcxx/include/variant
index 9006e7ca35b093..a139b9890508c2 100644
--- a/libcxx/include/variant
+++ b/libcxx/include/variant
@@ -268,7 +268,6 @@ namespace std {
 #  include <__verbose_abort>
 #  include <initializer_list>
 #  include <limits>
-#  include <new>
 #  include <version>
 
 // standard-mandated includes
diff --git a/libcxx/test/libcxx/transitive_includes/cxx23.csv b/libcxx/test/libcxx/transitive_includes/cxx23.csv
index 838ed411a7e387..17972b84537436 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx23.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx23.csv
@@ -9,7 +9,6 @@ algorithm cwctype
 algorithm initializer_list
 algorithm iosfwd
 algorithm limits
-algorithm new
 algorithm optional
 algorithm ratio
 algorithm tuple
@@ -18,7 +17,6 @@ any cstdint
 any cstring
 any initializer_list
 any limits
-any new
 any typeinfo
 any version
 array cctype
@@ -58,7 +56,6 @@ bitset cwctype
 bitset initializer_list
 bitset iosfwd
 bitset limits
-bitset new
 bitset stdexcept
 bitset string
 bitset string_view
@@ -86,7 +83,6 @@ ccomplex iosfwd
 ccomplex istream
 ccomplex limits
 ccomplex locale
-ccomplex new
 ccomplex ratio
 ccomplex sstream
 ccomplex stdexcept
@@ -125,7 +121,6 @@ chrono iosfwd
 chrono istream
 chrono limits
 chrono locale
-chrono new
 chrono optional
 chrono ratio
 chrono sstream
@@ -153,7 +148,6 @@ codecvt cwctype
 codecvt initializer_list
 codecvt iosfwd
 codecvt limits
-codecvt new
 codecvt stdexcept
 codecvt string
 codecvt string_view
@@ -184,7 +178,6 @@ complex iosfwd
 complex istream
 complex limits
 complex locale
-complex new
 complex ratio
 complex sstream
 complex stdexcept
@@ -203,7 +196,6 @@ condition_variable cstring
 condition_variable ctime
 condition_variable initializer_list
 condition_variable limits
-condition_variable new
 condition_variable ratio
 condition_variable typeinfo
 condition_variable version
@@ -235,7 +227,6 @@ ctgmath iosfwd
 ctgmath istream
 ctgmath limits
 ctgmath locale
-ctgmath new
 ctgmath ratio
 ctgmath sstream
 ctgmath stdexcept
@@ -256,13 +247,11 @@ deque cwchar
 deque cwctype
 deque initializer_list
 deque limits
-deque new
 deque stdexcept
 deque tuple
 deque version
 exception cstdint
 exception cstdlib
-exception new
 exception typeinfo
 exception version
 execution version
@@ -290,7 +279,6 @@ experimental/iterator iosfwd
 experimental/iterator iterator
 experimental/iterator limits
 experimental/iterator locale
-experimental/iterator new
 experimental/iterator ratio
 experimental/iterator stdexcept
 experimental/iterator streambuf
@@ -336,7 +324,6 @@ filesystem ios
 filesystem iosfwd
 filesystem limits
 filesystem locale
-filesystem new
 filesystem ratio
 filesystem stdexcept
 filesystem streambuf
@@ -354,7 +341,6 @@ flat_map cwchar
 flat_map cwctype
 flat_map initializer_list
 flat_map limits
-flat_map new
 flat_map optional
 flat_map stdexcept
 flat_map tuple
@@ -376,7 +362,6 @@ format cwctype
 format initializer_list
 format iosfwd
 format limits
-format new
 format optional
 format stdexcept
 format string
@@ -391,7 +376,6 @@ forward_list cwchar
 forward_list cwctype
 forward_list initializer_list
 forward_list limits
-forward_list new
 forward_list tuple
 forward_list version
 fstream bitset
@@ -416,7 +400,6 @@ fstream iosfwd
 fstream istream
 fstream limits
 fstream locale
-fstream new
 fstream ratio
 fstream stdexcept
 fstream streambuf
@@ -434,7 +417,6 @@ functional cwchar
 functional cwctype
 functional initializer_list
 functional limits
-functional new
 functional optional
 functional stdexcept
 functional tuple
@@ -461,7 +443,6 @@ future iosfwd
 future istream
 future limits
 future locale
-future new
 future ratio
 future sstream
 future stdexcept
@@ -490,7 +471,6 @@ iomanip ios
 iomanip iosfwd
 iomanip limits
 iomanip locale
-iomanip new
 iomanip ratio
 iomanip stdexcept
 iomanip streambuf
@@ -515,7 +495,6 @@ ios cwctype
 ios initializer_list
 ios iosfwd
 ios limits
-ios new
 ios ratio
 ios stdexcept
 ios string
@@ -547,7 +526,6 @@ iostream iosfwd
 iostream istream
 iostream limits
 iostream locale
-iostream new
 iostream optional
 iostream ostream
 iostream print
@@ -578,7 +556,7 @@ istream ios
 istream iosfwd
 istream limits
 istream locale
-istream new
+
 istream ratio
 istream stdexcept
 istream streambuf
@@ -598,7 +576,6 @@ iterator cwctype
 iterator initializer_list
 iterator iosfwd
 iterator limits
-iterator new
 iterator variant
 iterator version
 latch climits
@@ -617,7 +594,6 @@ list cwchar
 list cwctype
 list initializer_list
 list limits
-lis...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Dec 17, 2024

@llvm/pr-subscribers-libcxxabi

Author: Nikolas Klauser (philnik777)

Changes

Patch is 32.64 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/119964.diff

33 Files Affected:

  • (modified) libcxx/include/__algorithm/inplace_merge.h (-1)
  • (modified) libcxx/include/__algorithm/stable_partition.h (-1)
  • (modified) libcxx/include/__algorithm/stable_sort.h (-1)
  • (modified) libcxx/include/__exception/exception_ptr.h (-1)
  • (modified) libcxx/include/__functional/function.h (-1)
  • (modified) libcxx/include/__memory/allocator.h (+2-1)
  • (modified) libcxx/include/__memory/builtin_new_allocator.h (+1-1)
  • (modified) libcxx/include/__memory/ranges_construct_at.h (-1)
  • (modified) libcxx/include/__memory/ranges_uninitialized_algorithms.h (-1)
  • (modified) libcxx/include/__memory/raw_storage_iterator.h (-1)
  • (modified) libcxx/include/__memory/shared_ptr.h (-1)
  • (modified) libcxx/include/__memory/uninitialized_algorithms.h (-1)
  • (modified) libcxx/include/__memory/unique_temporary_buffer.h (+2-1)
  • (modified) libcxx/include/__memory_resource/polymorphic_allocator.h (+2-1)
  • (modified) libcxx/include/__ostream/basic_ostream.h (+1-1)
  • (modified) libcxx/include/__pstl/backends/libdispatch.h (+1-1)
  • (modified) libcxx/include/__pstl/cpu_algos/transform_reduce.h (-1)
  • (modified) libcxx/include/__pstl/handle_exception.h (+1-1)
  • (modified) libcxx/include/__utility/no_destroy.h (+1-1)
  • (modified) libcxx/include/__utility/small_buffer.h (+2-1)
  • (modified) libcxx/include/exception (+1)
  • (modified) libcxx/include/future (-1)
  • (modified) libcxx/include/locale (+1-1)
  • (modified) libcxx/include/map (+1-1)
  • (modified) libcxx/include/module.modulemap (+5-1)
  • (modified) libcxx/include/optional (-1)
  • (modified) libcxx/include/stdexcept (+1)
  • (modified) libcxx/include/unordered_map (+1-1)
  • (modified) libcxx/include/valarray (-1)
  • (modified) libcxx/include/variant (-1)
  • (modified) libcxx/test/libcxx/transitive_includes/cxx23.csv (+1-51)
  • (modified) libcxx/test/libcxx/transitive_includes/cxx26.csv (-51)
  • (modified) libcxxabi/src/cxa_default_handlers.cpp (+1)
diff --git a/libcxx/include/__algorithm/inplace_merge.h b/libcxx/include/__algorithm/inplace_merge.h
index ad3fe6a7a505d9..e0ccdab993da12 100644
--- a/libcxx/include/__algorithm/inplace_merge.h
+++ b/libcxx/include/__algorithm/inplace_merge.h
@@ -29,7 +29,6 @@
 #include <__memory/unique_temporary_buffer.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 
 #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 0438f589a39d7a..2ba7239a3a0397 100644
--- a/libcxx/include/__algorithm/stable_partition.h
+++ b/libcxx/include/__algorithm/stable_partition.h
@@ -22,7 +22,6 @@
 #include <__type_traits/remove_cvref.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__algorithm/stable_sort.h b/libcxx/include/__algorithm/stable_sort.h
index 43f591ac02b01d..1111f5509bc384 100644
--- a/libcxx/include/__algorithm/stable_sort.h
+++ b/libcxx/include/__algorithm/stable_sort.h
@@ -24,7 +24,6 @@
 #include <__type_traits/is_trivially_assignable.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__exception/exception_ptr.h b/libcxx/include/__exception/exception_ptr.h
index c43c005603dd7a..7df46a0e94dce0 100644
--- a/libcxx/include/__exception/exception_ptr.h
+++ b/libcxx/include/__exception/exception_ptr.h
@@ -16,7 +16,6 @@
 #include <__memory/construct_at.h>
 #include <__type_traits/decay.h>
 #include <cstdlib>
-#include <new>
 #include <typeinfo>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/__functional/function.h b/libcxx/include/__functional/function.h
index 543be05f10f330..06d3225a6e22d3 100644
--- a/libcxx/include/__functional/function.h
+++ b/libcxx/include/__functional/function.h
@@ -38,7 +38,6 @@
 #include <__utility/piecewise_construct.h>
 #include <__utility/swap.h>
 #include <__verbose_abort>
-#include <new>
 #include <tuple>
 #include <typeinfo>
 
diff --git a/libcxx/include/__memory/allocator.h b/libcxx/include/__memory/allocator.h
index 1fcaf6402667e1..a7066885a978a6 100644
--- a/libcxx/include/__memory/allocator.h
+++ b/libcxx/include/__memory/allocator.h
@@ -16,13 +16,14 @@
 #include <__memory/addressof.h>
 #include <__memory/allocate_at_least.h>
 #include <__memory/allocator_traits.h>
+#include <__new/allocate.h>
+#include <__new/exceptions.h>
 #include <__type_traits/is_const.h>
 #include <__type_traits/is_constant_evaluated.h>
 #include <__type_traits/is_same.h>
 #include <__type_traits/is_void.h>
 #include <__type_traits/is_volatile.h>
 #include <__utility/forward.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory/builtin_new_allocator.h b/libcxx/include/__memory/builtin_new_allocator.h
index b1611b12bff03e..cde1a6025a9a70 100644
--- a/libcxx/include/__memory/builtin_new_allocator.h
+++ b/libcxx/include/__memory/builtin_new_allocator.h
@@ -12,7 +12,7 @@
 #include <__config>
 #include <__cstddef/size_t.h>
 #include <__memory/unique_ptr.h>
-#include <new>
+#include <__new/allocate.h>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory/ranges_construct_at.h b/libcxx/include/__memory/ranges_construct_at.h
index b7523d4ba4b81b..35ed7965100038 100644
--- a/libcxx/include/__memory/ranges_construct_at.h
+++ b/libcxx/include/__memory/ranges_construct_at.h
@@ -22,7 +22,6 @@
 #include <__utility/declval.h>
 #include <__utility/forward.h>
 #include <__utility/move.h>
-#include <new>
 
 #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 4815ac6e5de99e..57a7a4616826e5 100644
--- a/libcxx/include/__memory/ranges_uninitialized_algorithms.h
+++ b/libcxx/include/__memory/ranges_uninitialized_algorithms.h
@@ -25,7 +25,6 @@
 #include <__ranges/dangling.h>
 #include <__type_traits/remove_reference.h>
 #include <__utility/move.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory/raw_storage_iterator.h b/libcxx/include/__memory/raw_storage_iterator.h
index 2ee4c074d8d337..a81d93275f7c49 100644
--- a/libcxx/include/__memory/raw_storage_iterator.h
+++ b/libcxx/include/__memory/raw_storage_iterator.h
@@ -16,7 +16,6 @@
 #include <__iterator/iterator_traits.h>
 #include <__memory/addressof.h>
 #include <__utility/move.h>
-#include <new>
 
 #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 4fa75af4ccc86d..97e4031499ed5e 100644
--- a/libcxx/include/__memory/shared_ptr.h
+++ b/libcxx/include/__memory/shared_ptr.h
@@ -57,7 +57,6 @@
 #include <__utility/move.h>
 #include <__utility/swap.h>
 #include <__verbose_abort>
-#include <new>
 #include <typeinfo>
 #if _LIBCPP_HAS_ATOMIC_HEADER
 #  include <__atomic/memory_order.h>
diff --git a/libcxx/include/__memory/uninitialized_algorithms.h b/libcxx/include/__memory/uninitialized_algorithms.h
index 25d192c7718857..9587f01f64d58f 100644
--- a/libcxx/include/__memory/uninitialized_algorithms.h
+++ b/libcxx/include/__memory/uninitialized_algorithms.h
@@ -37,7 +37,6 @@
 #include <__utility/exception_guard.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory/unique_temporary_buffer.h b/libcxx/include/__memory/unique_temporary_buffer.h
index 4f47c84e2f8dbe..ca6292338c0056 100644
--- a/libcxx/include/__memory/unique_temporary_buffer.h
+++ b/libcxx/include/__memory/unique_temporary_buffer.h
@@ -16,8 +16,9 @@
 #include <__cstddef/ptrdiff_t.h>
 #include <__memory/allocator.h>
 #include <__memory/unique_ptr.h>
+#include <__new/allocate.h>
+#include <__new/global_new_delete.h>
 #include <__type_traits/is_constant_evaluated.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__memory_resource/polymorphic_allocator.h b/libcxx/include/__memory_resource/polymorphic_allocator.h
index 30fa5c2170d502..2dec9788852c2b 100644
--- a/libcxx/include/__memory_resource/polymorphic_allocator.h
+++ b/libcxx/include/__memory_resource/polymorphic_allocator.h
@@ -15,9 +15,10 @@
 #include <__cstddef/max_align_t.h>
 #include <__fwd/pair.h>
 #include <__memory_resource/memory_resource.h>
+#include <__new/exceptions.h>
+#include <__new/placement_new_delete.h>
 #include <__utility/exception_guard.h>
 #include <limits>
-#include <new>
 #include <tuple>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/__ostream/basic_ostream.h b/libcxx/include/__ostream/basic_ostream.h
index ad43c72a3c2eae..6d24171bc0d6cf 100644
--- a/libcxx/include/__ostream/basic_ostream.h
+++ b/libcxx/include/__ostream/basic_ostream.h
@@ -16,6 +16,7 @@
 #  include <__exception/operations.h>
 #  include <__memory/shared_ptr.h>
 #  include <__memory/unique_ptr.h>
+#  include <__new/exceptions.h>
 #  include <__ostream/put_character_sequence.h>
 #  include <__system_error/error_code.h>
 #  include <__type_traits/conjunction.h>
@@ -26,7 +27,6 @@
 #  include <bitset>
 #  include <ios>
 #  include <locale>
-#  include <new> // for __throw_bad_alloc
 #  include <streambuf>
 #  include <string_view>
 
diff --git a/libcxx/include/__pstl/backends/libdispatch.h b/libcxx/include/__pstl/backends/libdispatch.h
index 701367b505c8b7..4c63c4c8442074 100644
--- a/libcxx/include/__pstl/backends/libdispatch.h
+++ b/libcxx/include/__pstl/backends/libdispatch.h
@@ -23,6 +23,7 @@
 #include <__memory/allocator.h>
 #include <__memory/construct_at.h>
 #include <__memory/unique_ptr.h>
+#include <__new/exceptions.h>
 #include <__numeric/reduce.h>
 #include <__pstl/backend_fwd.h>
 #include <__pstl/cpu_algos/any_of.h>
@@ -38,7 +39,6 @@
 #include <__utility/exception_guard.h>
 #include <__utility/move.h>
 #include <__utility/pair.h>
-#include <new>
 #include <optional>
 
 _LIBCPP_PUSH_MACROS
diff --git a/libcxx/include/__pstl/cpu_algos/transform_reduce.h b/libcxx/include/__pstl/cpu_algos/transform_reduce.h
index e9f622d832cd5c..abd9d42a6f2e65 100644
--- a/libcxx/include/__pstl/cpu_algos/transform_reduce.h
+++ b/libcxx/include/__pstl/cpu_algos/transform_reduce.h
@@ -20,7 +20,6 @@
 #include <__type_traits/is_arithmetic.h>
 #include <__type_traits/is_execution_policy.h>
 #include <__utility/move.h>
-#include <new>
 #include <optional>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/__pstl/handle_exception.h b/libcxx/include/__pstl/handle_exception.h
index 57dfcfde4554f8..3b5fca86902b0a 100644
--- a/libcxx/include/__pstl/handle_exception.h
+++ b/libcxx/include/__pstl/handle_exception.h
@@ -10,9 +10,9 @@
 #define _LIBCPP___PSTL_HANDLE_EXCEPTION_H
 
 #include <__config>
+#include <__new/exceptions.h>
 #include <__utility/forward.h>
 #include <__utility/move.h>
-#include <new> // __throw_bad_alloc
 #include <optional>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/__utility/no_destroy.h b/libcxx/include/__utility/no_destroy.h
index 8edd194577d7c7..16f424ae119c4b 100644
--- a/libcxx/include/__utility/no_destroy.h
+++ b/libcxx/include/__utility/no_destroy.h
@@ -10,9 +10,9 @@
 #define _LIBCPP___UTILITY_NO_DESTROY_H
 
 #include <__config>
+#include <__new/placement_new_delete.h>
 #include <__type_traits/is_constant_evaluated.h>
 #include <__utility/forward.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/__utility/small_buffer.h b/libcxx/include/__utility/small_buffer.h
index 405c0aed459632..ff6e7e76f14f52 100644
--- a/libcxx/include/__utility/small_buffer.h
+++ b/libcxx/include/__utility/small_buffer.h
@@ -13,12 +13,13 @@
 #include <__cstddef/byte.h>
 #include <__cstddef/size_t.h>
 #include <__memory/construct_at.h>
+#include <__new/allocate.h>
+#include <__new/launder.h>
 #include <__type_traits/decay.h>
 #include <__type_traits/is_trivially_constructible.h>
 #include <__type_traits/is_trivially_destructible.h>
 #include <__utility/exception_guard.h>
 #include <__utility/forward.h>
-#include <new>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
diff --git a/libcxx/include/exception b/libcxx/include/exception
index f0eaba1295fa3d..6565f1b4641d1d 100644
--- a/libcxx/include/exception
+++ b/libcxx/include/exception
@@ -93,6 +93,7 @@ template <class E> void rethrow_if_nested(const E& e);
 #  if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
 #    include <cstddef>
 #    include <cstdlib>
+#    include <new>
 #    include <type_traits>
 #  endif
 #endif // 0
diff --git a/libcxx/include/future b/libcxx/include/future
index dacf2c10a1990b..3a612d80bc85c6 100644
--- a/libcxx/include/future
+++ b/libcxx/include/future
@@ -407,7 +407,6 @@ template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc>;
 #    include <__utility/forward.h>
 #    include <__utility/move.h>
 #    include <__utility/swap.h>
-#    include <new>
 #    include <stdexcept>
 #    include <tuple>
 #    include <version>
diff --git a/libcxx/include/locale b/libcxx/include/locale
index 65b1200df061be..8421dc696106a6 100644
--- a/libcxx/include/locale
+++ b/libcxx/include/locale
@@ -207,6 +207,7 @@ template <class charT> class messages_byname;
 #    include <__locale>
 #    include <__locale_dir/pad_and_output.h>
 #    include <__memory/unique_ptr.h>
+#    include <__new/exceptions.h>
 #    include <__type_traits/make_unsigned.h>
 #    include <cerrno>
 #    include <cstdio>
@@ -214,7 +215,6 @@ template <class charT> class messages_byname;
 #    include <ctime>
 #    include <ios>
 #    include <limits>
-#    include <new>
 #    include <streambuf>
 #    include <version>
 
diff --git a/libcxx/include/map b/libcxx/include/map
index 4e964d2265b471..90f807f89bdcf6 100644
--- a/libcxx/include/map
+++ b/libcxx/include/map
@@ -591,6 +591,7 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred);  // C++20
 #  include <__memory/pointer_traits.h>
 #  include <__memory/unique_ptr.h>
 #  include <__memory_resource/polymorphic_allocator.h>
+#  include <__new/launder.h>
 #  include <__node_handle>
 #  include <__ranges/concepts.h>
 #  include <__ranges/container_compatible_range.h>
@@ -604,7 +605,6 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred);  // C++20
 #  include <__utility/pair.h>
 #  include <__utility/piecewise_construct.h>
 #  include <__utility/swap.h>
-#  include <new> // for std::launder
 #  include <stdexcept>
 #  include <tuple>
 #  include <version>
diff --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap
index 8d862e9f9ba361..4d1f1a727cc3d9 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -1607,7 +1607,11 @@ module std [system] {
     module allocate             { header "__new/allocate.h" }
     module destroying_delete_t  { header "__new/destroying_delete_t.h" }
     module exceptions           { header "__new/exceptions.h" }
-    module global_new_delete    { header "__new/global_new_delete.h" }
+    module global_new_delete    {
+      header "__new/global_new_delete.h"
+
+      export std.new.nothrow_t
+    }
     module interference_size    { header "__new/interference_size.h" }
     module launder              { header "__new/launder.h" }
     module new_handler          { header "__new/new_handler.h" }
diff --git a/libcxx/include/optional b/libcxx/include/optional
index b19c7a21aea372..1556b8b8fd942a 100644
--- a/libcxx/include/optional
+++ b/libcxx/include/optional
@@ -228,7 +228,6 @@ namespace std {
 #  include <__utility/swap.h>
 #  include <__verbose_abort>
 #  include <initializer_list>
-#  include <new>
 #  include <version>
 
 // standard-mandated includes
diff --git a/libcxx/include/stdexcept b/libcxx/include/stdexcept
index b3d805437a02ff..58c55092026a92 100644
--- a/libcxx/include/stdexcept
+++ b/libcxx/include/stdexcept
@@ -284,6 +284,7 @@ _LIBCPP_END_NAMESPACE_STD
 #    include <cstdlib>
 #    include <exception>
 #    include <iosfwd>
+#    include <new>
 #  endif
 #endif // 0
 
diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map
index 5d5979b28ff0e6..e55b7b7ef14036 100644
--- a/libcxx/include/unordered_map
+++ b/libcxx/include/unordered_map
@@ -602,6 +602,7 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
 #  include <__memory/pointer_traits.h>
 #  include <__memory/unique_ptr.h>
 #  include <__memory_resource/polymorphic_allocator.h>
+#  include <__new/launder.h>
 #  include <__node_handle>
 #  include <__ranges/concepts.h>
 #  include <__ranges/container_compatible_range.h>
@@ -615,7 +616,6 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
 #  include <__type_traits/type_identity.h>
 #  include <__utility/forward.h>
 #  include <__utility/pair.h>
-#  include <new> // launder
 #  include <stdexcept>
 #  include <tuple>
 #  include <version>
diff --git a/libcxx/include/valarray b/libcxx/include/valarray
index af916096b5ef9d..ef94dde9bc887c 100644
--- a/libcxx/include/valarray
+++ b/libcxx/include/valarray
@@ -364,7 +364,6 @@ template <class T> unspecified2 end(const valarray<T>& v);
 #  include <__utility/move.h>
 #  include <__utility/swap.h>
 #  include <cmath>
-#  include <new>
 #  include <version>
 
 // standard-mandated includes
diff --git a/libcxx/include/variant b/libcxx/include/variant
index 9006e7ca35b093..a139b9890508c2 100644
--- a/libcxx/include/variant
+++ b/libcxx/include/variant
@@ -268,7 +268,6 @@ namespace std {
 #  include <__verbose_abort>
 #  include <initializer_list>
 #  include <limits>
-#  include <new>
 #  include <version>
 
 // standard-mandated includes
diff --git a/libcxx/test/libcxx/transitive_includes/cxx23.csv b/libcxx/test/libcxx/transitive_includes/cxx23.csv
index 838ed411a7e387..17972b84537436 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx23.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx23.csv
@@ -9,7 +9,6 @@ algorithm cwctype
 algorithm initializer_list
 algorithm iosfwd
 algorithm limits
-algorithm new
 algorithm optional
 algorithm ratio
 algorithm tuple
@@ -18,7 +17,6 @@ any cstdint
 any cstring
 any initializer_list
 any limits
-any new
 any typeinfo
 any version
 array cctype
@@ -58,7 +56,6 @@ bitset cwctype
 bitset initializer_list
 bitset iosfwd
 bitset limits
-bitset new
 bitset stdexcept
 bitset string
 bitset string_view
@@ -86,7 +83,6 @@ ccomplex iosfwd
 ccomplex istream
 ccomplex limits
 ccomplex locale
-ccomplex new
 ccomplex ratio
 ccomplex sstream
 ccomplex stdexcept
@@ -125,7 +121,6 @@ chrono iosfwd
 chrono istream
 chrono limits
 chrono locale
-chrono new
 chrono optional
 chrono ratio
 chrono sstream
@@ -153,7 +148,6 @@ codecvt cwctype
 codecvt initializer_list
 codecvt iosfwd
 codecvt limits
-codecvt new
 codecvt stdexcept
 codecvt string
 codecvt string_view
@@ -184,7 +178,6 @@ complex iosfwd
 complex istream
 complex limits
 complex locale
-complex new
 complex ratio
 complex sstream
 complex stdexcept
@@ -203,7 +196,6 @@ condition_variable cstring
 condition_variable ctime
 condition_variable initializer_list
 condition_variable limits
-condition_variable new
 condition_variable ratio
 condition_variable typeinfo
 condition_variable version
@@ -235,7 +227,6 @@ ctgmath iosfwd
 ctgmath istream
 ctgmath limits
 ctgmath locale
-ctgmath new
 ctgmath ratio
 ctgmath sstream
 ctgmath stdexcept
@@ -256,13 +247,11 @@ deque cwchar
 deque cwctype
 deque initializer_list
 deque limits
-deque new
 deque stdexcept
 deque tuple
 deque version
 exception cstdint
 exception cstdlib
-exception new
 exception typeinfo
 exception version
 execution version
@@ -290,7 +279,6 @@ experimental/iterator iosfwd
 experimental/iterator iterator
 experimental/iterator limits
 experimental/iterator locale
-experimental/iterator new
 experimental/iterator ratio
 experimental/iterator stdexcept
 experimental/iterator streambuf
@@ -336,7 +324,6 @@ filesystem ios
 filesystem iosfwd
 filesystem limits
 filesystem locale
-filesystem new
 filesystem ratio
 filesystem stdexcept
 filesystem streambuf
@@ -354,7 +341,6 @@ flat_map cwchar
 flat_map cwctype
 flat_map initializer_list
 flat_map limits
-flat_map new
 flat_map optional
 flat_map stdexcept
 flat_map tuple
@@ -376,7 +362,6 @@ format cwctype
 format initializer_list
 format iosfwd
 format limits
-format new
 format optional
 format stdexcept
 format string
@@ -391,7 +376,6 @@ forward_list cwchar
 forward_list cwctype
 forward_list initializer_list
 forward_list limits
-forward_list new
 forward_list tuple
 forward_list version
 fstream bitset
@@ -416,7 +400,6 @@ fstream iosfwd
 fstream istream
 fstream limits
 fstream locale
-fstream new
 fstream ratio
 fstream stdexcept
 fstream streambuf
@@ -434,7 +417,6 @@ functional cwchar
 functional cwctype
 functional initializer_list
 functional limits
-functional new
 functional optional
 functional stdexcept
 functional tuple
@@ -461,7 +443,6 @@ future iosfwd
 future istream
 future limits
 future locale
-future new
 future ratio
 future sstream
 future stdexcept
@@ -490,7 +471,6 @@ iomanip ios
 iomanip iosfwd
 iomanip limits
 iomanip locale
-iomanip new
 iomanip ratio
 iomanip stdexcept
 iomanip streambuf
@@ -515,7 +495,6 @@ ios cwctype
 ios initializer_list
 ios iosfwd
 ios limits
-ios new
 ios ratio
 ios stdexcept
 ios string
@@ -547,7 +526,6 @@ iostream iosfwd
 iostream istream
 iostream limits
 iostream locale
-iostream new
 iostream optional
 iostream ostream
 iostream print
@@ -578,7 +556,7 @@ istream ios
 istream iosfwd
 istream limits
 istream locale
-istream new
+
 istream ratio
 istream stdexcept
 istream streambuf
@@ -598,7 +576,6 @@ iterator cwctype
 iterator initializer_list
 iterator iosfwd
 iterator limits
-iterator new
 iterator variant
 iterator version
 latch climits
@@ -617,7 +594,6 @@ list cwchar
 list cwctype
 list initializer_list
 list limits
-lis...
[truncated]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
libc++abi libc++abi C++ Runtime Library. Not libc++. libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants