[libcxx-commits] [libcxx] c9d36bd - [libc++] Granularize <exception> includes
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Sun Mar 19 02:28:38 PDT 2023
Author: Nikolas Klauser
Date: 2023-03-19T10:28:32+01:00
New Revision: c9d36bd80760db14f14b33789e6cbc6cb8c64830
URL: https://github.com/llvm/llvm-project/commit/c9d36bd80760db14f14b33789e6cbc6cb8c64830
DIFF: https://github.com/llvm/llvm-project/commit/c9d36bd80760db14f14b33789e6cbc6cb8c64830.diff
LOG: [libc++] Granularize <exception> includes
Reviewed By: ldionne, #libc
Spies: mikhail.ramalho, smeenai, libcxx-commits
Differential Revision: https://reviews.llvm.org/D146097
Added:
Modified:
libcxx/include/__expected/bad_expected_access.h
libcxx/include/__format/buffer.h
libcxx/include/__functional/function.h
libcxx/include/__ranges/join_view.h
libcxx/include/functional
libcxx/include/future
libcxx/include/map
libcxx/include/new
libcxx/include/ostream
libcxx/include/stdexcept
libcxx/include/thread
libcxx/include/typeinfo
libcxx/include/variant
libcxx/test/libcxx/transitive_includes/cxx03.csv
libcxx/test/libcxx/transitive_includes/cxx11.csv
libcxx/test/libcxx/transitive_includes/cxx14.csv
libcxx/test/libcxx/transitive_includes/cxx17.csv
libcxx/test/libcxx/transitive_includes/cxx20.csv
libcxx/test/libcxx/transitive_includes/cxx2b.csv
libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp
libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
Removed:
################################################################################
diff --git a/libcxx/include/__expected/bad_expected_access.h b/libcxx/include/__expected/bad_expected_access.h
index 361eab4b60187..e7a568c88f01c 100644
--- a/libcxx/include/__expected/bad_expected_access.h
+++ b/libcxx/include/__expected/bad_expected_access.h
@@ -10,10 +10,9 @@
#define _LIBCPP___EXPECTED_BAD_EXPECTED_ACCESS_H
#include <__config>
+#include <__exception/exception.h>
#include <__utility/move.h>
-#include <exception>
-
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
diff --git a/libcxx/include/__format/buffer.h b/libcxx/include/__format/buffer.h
index c8e11925a10cd..0f669ba9e2854 100644
--- a/libcxx/include/__format/buffer.h
+++ b/libcxx/include/__format/buffer.h
@@ -27,6 +27,7 @@
#include <__iterator/incrementable_traits.h>
#include <__iterator/iterator_traits.h>
#include <__iterator/wrap_iter.h>
+#include <__memory/addressof.h>
#include <__type_traits/add_pointer.h>
#include <__utility/move.h>
#include <cstddef>
diff --git a/libcxx/include/__functional/function.h b/libcxx/include/__functional/function.h
index 92e0d24f60b70..3c6998cb8c8fa 100644
--- a/libcxx/include/__functional/function.h
+++ b/libcxx/include/__functional/function.h
@@ -12,6 +12,7 @@
#include <__assert>
#include <__config>
+#include <__exception/exception.h>
#include <__functional/binary_function.h>
#include <__functional/invoke.h>
#include <__functional/unary_function.h>
@@ -32,7 +33,6 @@
#include <__utility/piecewise_construct.h>
#include <__utility/swap.h>
#include <__verbose_abort>
-#include <exception>
#include <new>
#include <tuple>
#include <typeinfo>
diff --git a/libcxx/include/__ranges/join_view.h b/libcxx/include/__ranges/join_view.h
index cba16c807bdb8..83145ffb23a92 100644
--- a/libcxx/include/__ranges/join_view.h
+++ b/libcxx/include/__ranges/join_view.h
@@ -22,6 +22,7 @@
#include <__iterator/iterator_traits.h>
#include <__iterator/iterator_with_data.h>
#include <__iterator/segmented_iterator.h>
+#include <__memory/addressof.h>
#include <__ranges/access.h>
#include <__ranges/all.h>
#include <__ranges/concepts.h>
diff --git a/libcxx/include/functional b/libcxx/include/functional
index 26c736f5673bd..489b70d6462cf 100644
--- a/libcxx/include/functional
+++ b/libcxx/include/functional
@@ -543,7 +543,6 @@ POLICY: For non-variadic implementations, the number of arguments is limited
#include <__functional/unary_negate.h>
#include <__functional/unwrap_ref.h>
#include <__utility/forward.h>
-#include <exception>
#include <memory> // TODO: find out why removing this breaks the modules build
#include <typeinfo>
#include <version>
@@ -555,6 +554,7 @@ POLICY: For non-variadic implementations, the number of arguments is limited
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <atomic>
# include <concepts>
+# include <exception>
# include <tuple>
# include <type_traits>
# include <utility>
diff --git a/libcxx/include/future b/libcxx/include/future
index dee9d0a71404d..cc7d1f93dd6f1 100644
--- a/libcxx/include/future
+++ b/libcxx/include/future
@@ -366,6 +366,7 @@ template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc>;
#include <__chrono/duration.h>
#include <__chrono/time_point.h>
#include <__config>
+#include <__exception/exception_ptr.h>
#include <__memory/allocator_arg_t.h>
#include <__memory/allocator_destructor.h>
#include <__memory/shared_ptr.h>
@@ -377,8 +378,6 @@ template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc>;
#include <__utility/auto_cast.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <__verbose_abort>
-#include <exception>
#include <mutex>
#include <new>
#include <system_error>
@@ -2461,6 +2460,7 @@ _LIBCPP_END_NAMESPACE_STD
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <atomic>
+# include <exception>
#endif
#endif // _LIBCPP_FUTURE
diff --git a/libcxx/include/map b/libcxx/include/map
index c190e3fc069b7..98ee961559e27 100644
--- a/libcxx/include/map
+++ b/libcxx/include/map
@@ -549,6 +549,7 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred); // C++20
#include <__iterator/erase_if_container.h>
#include <__iterator/iterator_traits.h>
#include <__iterator/reverse_iterator.h>
+#include <__memory/addressof.h>
#include <__memory/allocator.h>
#include <__memory_resource/polymorphic_allocator.h>
#include <__node_handle>
diff --git a/libcxx/include/new b/libcxx/include/new
index 871ace09a2428..af396cd4b8eb8 100644
--- a/libcxx/include/new
+++ b/libcxx/include/new
@@ -89,13 +89,14 @@ void operator delete[](void* ptr, void*) noexcept;
#include <__assert> // all public C++ headers provide the assertion handler
#include <__availability>
#include <__config>
+#include <__exception/exception.h>
+#include <__type_traits/alignment_of.h>
#include <__type_traits/is_function.h>
#include <__type_traits/is_same.h>
#include <__type_traits/remove_cv.h>
#include <__verbose_abort>
#include <cstddef>
#include <cstdlib>
-#include <exception>
#include <version>
#if defined(_LIBCPP_ABI_VCRUNTIME)
@@ -365,6 +366,7 @@ inline constexpr size_t hardware_constructive_interference_size = __GCC_CONSTRUC
_LIBCPP_END_NAMESPACE_STD
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <exception>
# include <type_traits>
#endif
diff --git a/libcxx/include/ostream b/libcxx/include/ostream
index 60f111ce6aa86..dbb54ac7e1a26 100644
--- a/libcxx/include/ostream
+++ b/libcxx/include/ostream
@@ -165,6 +165,7 @@ basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, cons
#include <__assert> // all public C++ headers provide the assertion handler
#include <__config>
+#include <__exception/operations.h>
#include <__memory/shared_ptr.h>
#include <__memory/unique_ptr.h>
#include <__type_traits/conjunction.h>
diff --git a/libcxx/include/stdexcept b/libcxx/include/stdexcept
index ef4740959e274..abdef87a5b0b3 100644
--- a/libcxx/include/stdexcept
+++ b/libcxx/include/stdexcept
@@ -43,9 +43,8 @@ public:
#include <__assert> // all public C++ headers provide the assertion handler
#include <__config>
-#include <__verbose_abort>
+#include <__exception/exception.h>
#include <cstdlib>
-#include <exception>
#include <iosfwd> // for string forward decl
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -300,4 +299,8 @@ void __throw_underflow_error(const char*__msg)
_LIBCPP_END_NAMESPACE_STD
+#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <exception>
+#endif
+
#endif // _LIBCPP_STDEXCEPT
diff --git a/libcxx/include/thread b/libcxx/include/thread
index db8a1e86251b3..13e722ca9476a 100644
--- a/libcxx/include/thread
+++ b/libcxx/include/thread
@@ -85,7 +85,9 @@ void sleep_for(const chrono::duration<Rep, Period>& rel_time);
#include <__assert> // all public C++ headers provide the assertion handler
#include <__config>
+#include <__exception/terminate.h>
#include <__functional/hash.h>
+#include <__memory/addressof.h>
#include <__memory/unique_ptr.h>
#include <__mutex_base>
#include <__thread/poll_with_backoff.h>
diff --git a/libcxx/include/typeinfo b/libcxx/include/typeinfo
index ca35150644552..1553be1c6e107 100644
--- a/libcxx/include/typeinfo
+++ b/libcxx/include/typeinfo
@@ -59,12 +59,12 @@ public:
#include <__assert> // all public C++ headers provide the assertion handler
#include <__availability>
#include <__config>
+#include <__exception/exception.h>
#include <__type_traits/is_constant_evaluated.h>
#include <__verbose_abort>
#include <cstddef>
#include <cstdint>
#include <cstdlib>
-#include <exception>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
@@ -415,6 +415,7 @@ void __throw_bad_cast()
_LIBCPP_END_NAMESPACE_STD
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <exception>
# include <type_traits>
#endif
diff --git a/libcxx/include/variant b/libcxx/include/variant
index a88662e9fd08d..425feadd120b0 100644
--- a/libcxx/include/variant
+++ b/libcxx/include/variant
@@ -210,6 +210,7 @@ namespace std {
#include <__compare/compare_three_way_result.h>
#include <__compare/three_way_comparable.h>
#include <__config>
+#include <__exception/exception.h>
#include <__functional/hash.h>
#include <__functional/invoke.h>
#include <__functional/operations.h>
@@ -239,7 +240,6 @@ namespace std {
#include <__utility/swap.h>
#include <__variant/monostate.h>
#include <__verbose_abort>
-#include <exception>
#include <initializer_list>
#include <limits>
#include <new>
@@ -1834,6 +1834,7 @@ _LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <exception>
# include <type_traits>
# include <typeinfo>
# include <utility>
diff --git a/libcxx/test/libcxx/transitive_includes/cxx03.csv b/libcxx/test/libcxx/transitive_includes/cxx03.csv
index a5b1c91100d5d..92a84f59268bb 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx03.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx03.csv
@@ -213,7 +213,6 @@ exception version
execution version
expected cstddef
expected cstdlib
-expected exception
expected initializer_list
expected new
expected version
diff --git a/libcxx/test/libcxx/transitive_includes/cxx11.csv b/libcxx/test/libcxx/transitive_includes/cxx11.csv
index 2f36b61d3c3c7..833e8ac19f8e9 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx11.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx11.csv
@@ -213,7 +213,6 @@ exception version
execution version
expected cstddef
expected cstdlib
-expected exception
expected initializer_list
expected new
expected version
diff --git a/libcxx/test/libcxx/transitive_includes/cxx14.csv b/libcxx/test/libcxx/transitive_includes/cxx14.csv
index cc5075fe139f4..c3c0ae6f71e8d 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx14.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx14.csv
@@ -213,7 +213,6 @@ exception version
execution version
expected cstddef
expected cstdlib
-expected exception
expected initializer_list
expected new
expected version
diff --git a/libcxx/test/libcxx/transitive_includes/cxx17.csv b/libcxx/test/libcxx/transitive_includes/cxx17.csv
index cc5075fe139f4..c3c0ae6f71e8d 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx17.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx17.csv
@@ -213,7 +213,6 @@ exception version
execution version
expected cstddef
expected cstdlib
-expected exception
expected initializer_list
expected new
expected version
diff --git a/libcxx/test/libcxx/transitive_includes/cxx20.csv b/libcxx/test/libcxx/transitive_includes/cxx20.csv
index 4a892ae5e17be..a5be0f14d8589 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx20.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx20.csv
@@ -220,7 +220,6 @@ exception version
execution version
expected cstddef
expected cstdlib
-expected exception
expected initializer_list
expected new
expected version
diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b.csv b/libcxx/test/libcxx/transitive_includes/cxx2b.csv
index beb4acc3211c6..8bed29fafc013 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx2b.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx2b.csv
@@ -151,7 +151,6 @@ exception version
execution version
expected cstddef
expected cstdlib
-expected exception
expected initializer_list
expected new
expected version
@@ -277,7 +276,6 @@ functional cstddef
functional cstdint
functional cstdlib
functional cstring
-functional exception
functional initializer_list
functional iosfwd
functional limits
@@ -293,7 +291,6 @@ future cstddef
future cstdint
future cstdlib
future cstring
-future exception
future initializer_list
future iosfwd
future limits
@@ -420,7 +417,6 @@ mutex typeinfo
mutex version
new cstddef
new cstdlib
-new exception
new version
numbers version
numeric cmath
@@ -548,7 +544,6 @@ stack deque
stack initializer_list
stack version
stdexcept cstdlib
-stdexcept exception
stdexcept iosfwd
streambuf cstdint
streambuf ios
@@ -618,7 +613,6 @@ typeindex version
typeinfo cstddef
typeinfo cstdint
typeinfo cstdlib
-typeinfo exception
unordered_map cmath
unordered_map compare
unordered_map cstddef
@@ -663,7 +657,6 @@ variant compare
variant cstddef
variant cstdint
variant cstring
-variant exception
variant initializer_list
variant limits
variant new
diff --git a/libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp b/libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp
index fd61634bd96e5..4e2086220e963 100644
--- a/libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp
+++ b/libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp
@@ -55,13 +55,14 @@
// that terminate has been called)
-#include <condition_variable>
#include <atomic>
-#include <thread>
+#include <cassert>
#include <chrono>
-#include <string>
+#include <condition_variable>
#include <cstdlib>
-#include <cassert>
+#include <exception>
+#include <string>
+#include <thread>
#include "make_test_thread.h"
diff --git a/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp b/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
index 77665050d1848..1d959e96dbcad 100644
--- a/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
+++ b/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
@@ -15,10 +15,11 @@
// ~thread();
-#include <thread>
-#include <new>
-#include <cstdlib>
#include <cassert>
+#include <cstdlib>
+#include <exception>
+#include <new>
+#include <thread>
#include "make_test_thread.h"
#include "test_macros.h"
More information about the libcxx-commits
mailing list