[libcxx-commits] [libcxx] [libcxxabi] [libc++] Granularize <new> includes (PR #119964)

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Sat Dec 14 04:24:46 PST 2024


https://github.com/philnik777 updated https://github.com/llvm/llvm-project/pull/119964

>From 0dc9fa70c681be086296e674d145b7aa3e609614 Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Sat, 14 Dec 2024 13:01:50 +0100
Subject: [PATCH] [libc++] Granularize <new> includes

---
 libcxx/include/__algorithm/inplace_merge.h    |  1 -
 libcxx/include/__algorithm/stable_partition.h |  1 -
 libcxx/include/__algorithm/stable_sort.h      |  1 -
 libcxx/include/__exception/exception_ptr.h    |  1 -
 libcxx/include/__functional/function.h        |  1 -
 libcxx/include/__memory/allocator.h           |  3 +-
 .../include/__memory/builtin_new_allocator.h  |  2 +-
 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 -
 .../__memory/uninitialized_algorithms.h       |  1 -
 .../__memory/unique_temporary_buffer.h        |  3 +-
 .../__memory_resource/polymorphic_allocator.h |  3 +-
 libcxx/include/__ostream/basic_ostream.h      |  2 +-
 libcxx/include/__pstl/backends/libdispatch.h  |  2 +-
 .../__pstl/cpu_algos/transform_reduce.h       |  1 -
 libcxx/include/__pstl/handle_exception.h      |  2 +-
 libcxx/include/__utility/no_destroy.h         |  2 +-
 libcxx/include/__utility/small_buffer.h       |  3 +-
 libcxx/include/exception                      |  1 +
 libcxx/include/future                         |  1 -
 libcxx/include/locale                         |  2 +-
 libcxx/include/map                            |  2 +-
 libcxx/include/module.modulemap               |  6 ++-
 libcxx/include/optional                       |  1 -
 libcxx/include/stdexcept                      |  1 +
 libcxx/include/unordered_map                  |  2 +-
 libcxx/include/valarray                       |  1 -
 libcxx/include/variant                        |  1 -
 .../test/libcxx/transitive_includes/cxx23.csv | 52 +------------------
 .../test/libcxx/transitive_includes/cxx26.csv | 51 ------------------
 libcxxabi/src/cxa_default_handlers.cpp        |  1 +
 33 files changed, 25 insertions(+), 130 deletions(-)

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
-list new
 list tuple
 list version
 locale cctype
@@ -637,7 +613,6 @@ locale initializer_list
 locale ios
 locale iosfwd
 locale limits
-locale new
 locale ratio
 locale stdexcept
 locale streambuf
@@ -654,7 +629,6 @@ map cwchar
 map cwctype
 map initializer_list
 map limits
-map new
 map optional
 map stdexcept
 map tuple
@@ -676,7 +650,6 @@ memory cstdint
 memory cstring
 memory initializer_list
 memory limits
-memory new
 memory tuple
 memory typeinfo
 memory version
@@ -686,7 +659,6 @@ memory_resource compare
 memory_resource cstdint
 memory_resource ctime
 memory_resource limits
-memory_resource new
 memory_resource ratio
 memory_resource tuple
 memory_resource version
@@ -709,7 +681,6 @@ numeric cstring
 numeric ctime
 numeric initializer_list
 numeric limits
-numeric new
 numeric optional
 numeric ratio
 numeric tuple
@@ -719,7 +690,6 @@ optional cstdint
 optional cstring
 optional initializer_list
 optional limits
-optional new
 optional version
 ostream array
 ostream bitset
@@ -743,7 +713,6 @@ ostream ios
 ostream iosfwd
 ostream limits
 ostream locale
-ostream new
 ostream optional
 ostream print
 ostream ratio
@@ -772,7 +741,6 @@ print format
 print initializer_list
 print iosfwd
 print limits
-print new
 print optional
 print stdexcept
 print string
@@ -797,7 +765,6 @@ queue deque
 queue initializer_list
 queue iosfwd
 queue limits
-queue new
 queue stdexcept
 queue string
 queue string_view
@@ -818,7 +785,6 @@ random cwctype
 random initializer_list
 random iosfwd
 random limits
-random new
 random numeric
 random optional
 random ratio
@@ -839,7 +805,6 @@ ranges initializer_list
 ranges iosfwd
 ranges iterator
 ranges limits
-ranges new
 ranges optional
 ranges span
 ranges stdexcept
@@ -866,7 +831,6 @@ regex deque
 regex initializer_list
 regex iosfwd
 regex limits
-regex new
 regex stdexcept
 regex string
 regex string_view
@@ -894,7 +858,6 @@ set cwchar
 set cwctype
 set initializer_list
 set limits
-set new
 set optional
 set tuple
 set version
@@ -931,7 +894,6 @@ sstream iosfwd
 sstream istream
 sstream limits
 sstream locale
-sstream new
 sstream ratio
 sstream stdexcept
 sstream streambuf
@@ -949,7 +911,6 @@ stack cwctype
 stack deque
 stack initializer_list
 stack limits
-stack new
 stack stdexcept
 stack tuple
 stack version
@@ -978,7 +939,6 @@ streambuf initializer_list
 streambuf ios
 streambuf iosfwd
 streambuf limits
-streambuf new
 streambuf ratio
 streambuf stdexcept
 streambuf string
@@ -997,7 +957,6 @@ string cwctype
 string initializer_list
 string iosfwd
 string limits
-string new
 string stdexcept
 string string_view
 string tuple
@@ -1034,7 +993,6 @@ strstream iosfwd
 strstream istream
 strstream limits
 strstream locale
-strstream new
 strstream ratio
 strstream stdexcept
 strstream streambuf
@@ -1066,7 +1024,6 @@ syncstream iosfwd
 syncstream limits
 syncstream locale
 syncstream map
-syncstream new
 syncstream optional
 syncstream ostream
 syncstream print
@@ -1091,7 +1048,6 @@ system_error cwctype
 system_error initializer_list
 system_error iosfwd
 system_error limits
-system_error new
 system_error stdexcept
 system_error string
 system_error string_view
@@ -1119,7 +1075,6 @@ thread iosfwd
 thread istream
 thread limits
 thread locale
-thread new
 thread ratio
 thread sstream
 thread stdexcept
@@ -1147,7 +1102,6 @@ unordered_map cstdint
 unordered_map cstring
 unordered_map initializer_list
 unordered_map limits
-unordered_map new
 unordered_map optional
 unordered_map stdexcept
 unordered_map tuple
@@ -1157,7 +1111,6 @@ unordered_set cstdint
 unordered_set cstring
 unordered_set initializer_list
 unordered_set limits
-unordered_set new
 unordered_set optional
 unordered_set tuple
 unordered_set version
@@ -1170,14 +1123,12 @@ valarray cmath
 valarray cstdint
 valarray initializer_list
 valarray limits
-valarray new
 valarray version
 variant compare
 variant cstdint
 variant cstring
 variant initializer_list
 variant limits
-variant new
 variant version
 vector array
 vector cctype
@@ -1195,7 +1146,6 @@ vector cwctype
 vector initializer_list
 vector iosfwd
 vector limits
-vector new
 vector stdexcept
 vector string
 vector string_view
diff --git a/libcxx/test/libcxx/transitive_includes/cxx26.csv b/libcxx/test/libcxx/transitive_includes/cxx26.csv
index cb48eb32c26b3c..00ab78e61a4576 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx26.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx26.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
@@ -415,7 +399,6 @@ fstream iosfwd
 fstream istream
 fstream limits
 fstream locale
-fstream new
 fstream ratio
 fstream stdexcept
 fstream streambuf
@@ -433,7 +416,6 @@ functional cwchar
 functional cwctype
 functional initializer_list
 functional limits
-functional new
 functional optional
 functional stdexcept
 functional tuple
@@ -460,7 +442,6 @@ future iosfwd
 future istream
 future limits
 future locale
-future new
 future ratio
 future sstream
 future stdexcept
@@ -489,7 +470,6 @@ iomanip ios
 iomanip iosfwd
 iomanip limits
 iomanip locale
-iomanip new
 iomanip ratio
 iomanip stdexcept
 iomanip streambuf
@@ -514,7 +494,6 @@ ios cwctype
 ios initializer_list
 ios iosfwd
 ios limits
-ios new
 ios ratio
 ios stdexcept
 ios string
@@ -546,7 +525,6 @@ iostream iosfwd
 iostream istream
 iostream limits
 iostream locale
-iostream new
 iostream optional
 iostream ostream
 iostream print
@@ -577,7 +555,6 @@ istream ios
 istream iosfwd
 istream limits
 istream locale
-istream new
 istream ratio
 istream stdexcept
 istream streambuf
@@ -597,7 +574,6 @@ iterator cwctype
 iterator initializer_list
 iterator iosfwd
 iterator limits
-iterator new
 iterator variant
 iterator version
 latch climits
@@ -616,7 +592,6 @@ list cwchar
 list cwctype
 list initializer_list
 list limits
-list new
 list tuple
 list version
 locale cctype
@@ -636,7 +611,6 @@ locale initializer_list
 locale ios
 locale iosfwd
 locale limits
-locale new
 locale ratio
 locale stdexcept
 locale streambuf
@@ -653,7 +627,6 @@ map cwchar
 map cwctype
 map initializer_list
 map limits
-map new
 map optional
 map stdexcept
 map tuple
@@ -675,7 +648,6 @@ memory cstdint
 memory cstring
 memory initializer_list
 memory limits
-memory new
 memory tuple
 memory typeinfo
 memory version
@@ -685,7 +657,6 @@ memory_resource compare
 memory_resource cstdint
 memory_resource ctime
 memory_resource limits
-memory_resource new
 memory_resource ratio
 memory_resource tuple
 memory_resource version
@@ -708,7 +679,6 @@ numeric cstring
 numeric ctime
 numeric initializer_list
 numeric limits
-numeric new
 numeric optional
 numeric ratio
 numeric tuple
@@ -718,7 +688,6 @@ optional cstdint
 optional cstring
 optional initializer_list
 optional limits
-optional new
 optional version
 ostream array
 ostream bitset
@@ -742,7 +711,6 @@ ostream ios
 ostream iosfwd
 ostream limits
 ostream locale
-ostream new
 ostream optional
 ostream print
 ostream ratio
@@ -771,7 +739,6 @@ print format
 print initializer_list
 print iosfwd
 print limits
-print new
 print optional
 print stdexcept
 print string
@@ -796,7 +763,6 @@ queue deque
 queue initializer_list
 queue iosfwd
 queue limits
-queue new
 queue stdexcept
 queue string
 queue string_view
@@ -817,7 +783,6 @@ random cwctype
 random initializer_list
 random iosfwd
 random limits
-random new
 random numeric
 random optional
 random ratio
@@ -838,7 +803,6 @@ ranges initializer_list
 ranges iosfwd
 ranges iterator
 ranges limits
-ranges new
 ranges optional
 ranges span
 ranges stdexcept
@@ -865,7 +829,6 @@ regex deque
 regex initializer_list
 regex iosfwd
 regex limits
-regex new
 regex stdexcept
 regex string
 regex string_view
@@ -893,7 +856,6 @@ set cwchar
 set cwctype
 set initializer_list
 set limits
-set new
 set optional
 set tuple
 set version
@@ -930,7 +892,6 @@ sstream iosfwd
 sstream istream
 sstream limits
 sstream locale
-sstream new
 sstream ratio
 sstream stdexcept
 sstream streambuf
@@ -948,7 +909,6 @@ stack cwctype
 stack deque
 stack initializer_list
 stack limits
-stack new
 stack stdexcept
 stack tuple
 stack version
@@ -977,7 +937,6 @@ streambuf initializer_list
 streambuf ios
 streambuf iosfwd
 streambuf limits
-streambuf new
 streambuf ratio
 streambuf stdexcept
 streambuf string
@@ -996,7 +955,6 @@ string cwctype
 string initializer_list
 string iosfwd
 string limits
-string new
 string stdexcept
 string string_view
 string tuple
@@ -1033,7 +991,6 @@ strstream iosfwd
 strstream istream
 strstream limits
 strstream locale
-strstream new
 strstream ratio
 strstream stdexcept
 strstream streambuf
@@ -1065,7 +1022,6 @@ syncstream iosfwd
 syncstream limits
 syncstream locale
 syncstream map
-syncstream new
 syncstream optional
 syncstream ostream
 syncstream print
@@ -1090,7 +1046,6 @@ system_error cwctype
 system_error initializer_list
 system_error iosfwd
 system_error limits
-system_error new
 system_error stdexcept
 system_error string
 system_error string_view
@@ -1118,7 +1073,6 @@ thread iosfwd
 thread istream
 thread limits
 thread locale
-thread new
 thread ratio
 thread sstream
 thread stdexcept
@@ -1146,7 +1100,6 @@ unordered_map cstdint
 unordered_map cstring
 unordered_map initializer_list
 unordered_map limits
-unordered_map new
 unordered_map optional
 unordered_map stdexcept
 unordered_map tuple
@@ -1156,7 +1109,6 @@ unordered_set cstdint
 unordered_set cstring
 unordered_set initializer_list
 unordered_set limits
-unordered_set new
 unordered_set optional
 unordered_set tuple
 unordered_set version
@@ -1169,14 +1121,12 @@ valarray cmath
 valarray cstdint
 valarray initializer_list
 valarray limits
-valarray new
 valarray version
 variant compare
 variant cstdint
 variant cstring
 variant initializer_list
 variant limits
-variant new
 variant version
 vector array
 vector cctype
@@ -1194,7 +1144,6 @@ vector cwctype
 vector initializer_list
 vector iosfwd
 vector limits
-vector new
 vector stdexcept
 vector string
 vector string_view
diff --git a/libcxxabi/src/cxa_default_handlers.cpp b/libcxxabi/src/cxa_default_handlers.cpp
index 52b1aacae9932f..b029982ea87c31 100644
--- a/libcxxabi/src/cxa_default_handlers.cpp
+++ b/libcxxabi/src/cxa_default_handlers.cpp
@@ -10,6 +10,7 @@
 //===----------------------------------------------------------------------===//
 
 #include <exception>
+#include <new>
 #include "abort_message.h"
 #include "cxxabi.h"
 #include "cxa_handlers.h"



More information about the libcxx-commits mailing list