diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst index 549efe727f2cea..aca9eaf475e177 100644 --- a/libcxx/docs/ReleaseNotes.rst +++ b/libcxx/docs/ReleaseNotes.rst @@ -59,7 +59,7 @@ Deprecations and Removals includes are removed based on the language version used. Incidental transitive inclusions of the following headers have been removed: - - C++2b: ``bit``, ``cstring``, ``type_traits`` + - C++2b: ``atomic``, ``bit``, ``cstring``, ``type_traits`` - The headers ```` and ```` have been removed, since all the contents have been implemented in namespace ``std`` for at least two releases. diff --git a/libcxx/include/__memory/shared_ptr.h b/libcxx/include/__memory/shared_ptr.h index ec8bb9cec77b61..c5089f3f8686db 100644 --- a/libcxx/include/__memory/shared_ptr.h +++ b/libcxx/include/__memory/shared_ptr.h @@ -53,7 +53,7 @@ #include #include #if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER) -# include +# include <__atomic/memory_order.h> #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/atomic b/libcxx/include/atomic index 3ebb2a93298b6d..2f122a707bdc33 100644 --- a/libcxx/include/atomic +++ b/libcxx/include/atomic @@ -534,29 +534,24 @@ template #include <__atomic/kill_dependency.h> #include <__atomic/memory_order.h> #include <__config> -#include -#include -#include #include -#ifndef _LIBCPP_HAS_NO_THREADS -# include <__threading_support> -#endif - #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif #ifdef _LIBCPP_HAS_NO_ATOMIC_HEADER -# error is not implemented +# error is not implemented #endif + #ifdef kill_dependency -# error is incompatible with before C++23. Please compile with -std=c++23. +# error is incompatible with before C++23. Please compile with -std=c++23. #endif #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include +# include # include #endif diff --git a/libcxx/include/barrier b/libcxx/include/barrier index 2e8906b71379cf..41b3d8e0b7b403 100644 --- a/libcxx/include/barrier +++ b/libcxx/include/barrier @@ -46,13 +46,18 @@ namespace std */ #include <__assert> // all public C++ headers provide the assertion handler +#include <__atomic/atomic_base.h> +#include <__atomic/memory_order.h> #include <__availability> #include <__config> #include <__memory/unique_ptr.h> +#include <__thread/poll_with_backoff.h> #include <__thread/timed_backoff_policy.h> #include <__utility/move.h> -#include +#include +#include #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -329,6 +334,7 @@ _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include # include # include # include diff --git a/libcxx/include/condition_variable b/libcxx/include/condition_variable index f13df1c012fa9b..85050dd064d4b7 100644 --- a/libcxx/include/condition_variable +++ b/libcxx/include/condition_variable @@ -269,6 +269,7 @@ _LIBCPP_END_NAMESPACE_STD #endif // !_LIBCPP_HAS_NO_THREADS #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include # include # include #endif diff --git a/libcxx/include/functional b/libcxx/include/functional index 66860209b6a6a6..26c736f5673bd5 100644 --- a/libcxx/include/functional +++ b/libcxx/include/functional @@ -553,6 +553,7 @@ POLICY: For non-variadic implementations, the number of arguments is limited #endif #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include # include # include # include diff --git a/libcxx/include/future b/libcxx/include/future index 92999ce3dfc667..e0e56efa329990 100644 --- a/libcxx/include/future +++ b/libcxx/include/future @@ -2458,4 +2458,8 @@ _LIBCPP_END_NAMESPACE_STD # include #endif +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +#endif + #endif // _LIBCPP_FUTURE diff --git a/libcxx/include/ios b/libcxx/include/ios index bc478a11bd22bd..0682ecfe5f6c68 100644 --- a/libcxx/include/ios +++ b/libcxx/include/ios @@ -229,7 +229,7 @@ storage-class-specifier const error_category& iostream_category() noexcept; #include #if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER) -#include // for __xindex_ +# include <__atomic/atomic.h> // for __xindex_ #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -1039,6 +1039,7 @@ defaultfloat(ios_base& __str) _LIBCPP_END_NAMESPACE_STD #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include # include # include # include diff --git a/libcxx/include/latch b/libcxx/include/latch index ff17f8453ea504..d72cb4f7b0ebda 100644 --- a/libcxx/include/latch +++ b/libcxx/include/latch @@ -41,9 +41,12 @@ namespace std */ #include <__assert> // all public C++ headers provide the assertion handler +#include <__atomic/atomic_base.h> +#include <__atomic/atomic_sync.h> +#include <__atomic/memory_order.h> #include <__availability> #include <__config> -#include +#include #include #include @@ -111,4 +114,8 @@ _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +#endif + #endif //_LIBCPP_LATCH diff --git a/libcxx/include/memory b/libcxx/include/memory index 0a7787acf1a8ec..f6063178edc084 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -917,6 +917,7 @@ template #endif #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include # include # include # include diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in index da71f110d5b41e..5f874d0d0de0cb 100644 --- a/libcxx/include/module.modulemap.in +++ b/libcxx/include/module.modulemap.in @@ -631,7 +631,10 @@ module std [system] { export * module __atomic { - module aliases { private header "__atomic/aliases.h" } + module aliases { + private header "__atomic/aliases.h" + export atomic + } module atomic { private header "__atomic/atomic.h" } module atomic_base { private header "__atomic/atomic_base.h" } module atomic_flag { private header "__atomic/atomic_flag.h" } diff --git a/libcxx/include/mutex b/libcxx/include/mutex index 5f4f7d3791a883..54104d5173d540 100644 --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -704,7 +704,9 @@ _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include # include +# include # include # include #endif diff --git a/libcxx/include/ostream b/libcxx/include/ostream index 7bd0ed378dc0e4..6db0e889ce4579 100644 --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -1192,6 +1192,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream; _LIBCPP_END_NAMESPACE_STD #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include # include # include # include diff --git a/libcxx/include/semaphore b/libcxx/include/semaphore index 73cbc7f40a54aa..cfbc2477a8bafc 100644 --- a/libcxx/include/semaphore +++ b/libcxx/include/semaphore @@ -46,12 +46,15 @@ using binary_semaphore = counting_semaphore<1>; */ #include <__assert> // all public C++ headers provide the assertion handler +#include <__atomic/atomic_base.h> +#include <__atomic/atomic_sync.h> +#include <__atomic/memory_order.h> #include <__availability> #include <__chrono/time_point.h> #include <__config> #include <__thread/timed_backoff_policy.h> #include <__threading_support> -#include +#include #include #include @@ -188,4 +191,8 @@ _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +#endif + #endif //_LIBCPP_SEMAPHORE diff --git a/libcxx/test/libcxx/atomics/atomics.align/align.pass.cpp b/libcxx/test/libcxx/atomics/atomics.align/align.pass.cpp index e99af02e4f8e2d..495d02fbe5c8d4 100644 --- a/libcxx/test/libcxx/atomics/atomics.align/align.pass.cpp +++ b/libcxx/test/libcxx/atomics/atomics.align/align.pass.cpp @@ -37,6 +37,7 @@ #include #include +#include template struct atomic_test : public std::__atomic_base { diff --git a/libcxx/test/libcxx/transitive_includes/cxx03.csv b/libcxx/test/libcxx/transitive_includes/cxx03.csv index 827e1c6ff4f3aa..a5b1c91100d5dd 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx03.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx03.csv @@ -74,6 +74,7 @@ barrier ratio barrier stdexcept barrier type_traits barrier variant +barrier version bit cstdint bit cstdlib bit iosfwd @@ -162,6 +163,7 @@ condition_variable cstddef condition_variable cstdint condition_variable cstdlib condition_variable cstring +condition_variable ctime condition_variable initializer_list condition_variable iosfwd condition_variable limits @@ -460,7 +462,14 @@ iterator utility iterator variant iterator version latch atomic +latch cstddef +latch cstdint +latch cstring +latch ctime +latch iosfwd latch limits +latch ratio +latch type_traits latch version limits type_traits limits version @@ -553,6 +562,7 @@ mutex cstddef mutex cstdint mutex cstdlib mutex cstring +mutex ctime mutex functional mutex initializer_list mutex iosfwd @@ -703,6 +713,8 @@ scoped_allocator variant scoped_allocator version semaphore atomic semaphore cstddef +semaphore cstdint +semaphore cstring semaphore ctime semaphore iosfwd semaphore limits diff --git a/libcxx/test/libcxx/transitive_includes/cxx11.csv b/libcxx/test/libcxx/transitive_includes/cxx11.csv index 8a438bf34ec528..2f36b61d3c3c78 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx11.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx11.csv @@ -74,6 +74,7 @@ barrier ratio barrier stdexcept barrier type_traits barrier variant +barrier version bit cstdint bit cstdlib bit iosfwd @@ -162,6 +163,7 @@ condition_variable cstddef condition_variable cstdint condition_variable cstdlib condition_variable cstring +condition_variable ctime condition_variable initializer_list condition_variable iosfwd condition_variable limits @@ -460,7 +462,14 @@ iterator utility iterator variant iterator version latch atomic +latch cstddef +latch cstdint +latch cstring +latch ctime +latch iosfwd latch limits +latch ratio +latch type_traits latch version limits type_traits limits version @@ -553,6 +562,7 @@ mutex cstddef mutex cstdint mutex cstdlib mutex cstring +mutex ctime mutex functional mutex initializer_list mutex iosfwd @@ -704,6 +714,8 @@ scoped_allocator variant scoped_allocator version semaphore atomic semaphore cstddef +semaphore cstdint +semaphore cstring semaphore ctime semaphore iosfwd semaphore limits diff --git a/libcxx/test/libcxx/transitive_includes/cxx14.csv b/libcxx/test/libcxx/transitive_includes/cxx14.csv index 28bf5a5b943c66..cc5075fe139f4a 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx14.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx14.csv @@ -74,6 +74,7 @@ barrier ratio barrier stdexcept barrier type_traits barrier variant +barrier version bit cstdint bit cstdlib bit iosfwd @@ -162,6 +163,7 @@ condition_variable cstddef condition_variable cstdint condition_variable cstdlib condition_variable cstring +condition_variable ctime condition_variable initializer_list condition_variable iosfwd condition_variable limits @@ -462,7 +464,14 @@ iterator utility iterator variant iterator version latch atomic +latch cstddef +latch cstdint +latch cstring +latch ctime +latch iosfwd latch limits +latch ratio +latch type_traits latch version limits type_traits limits version @@ -555,6 +564,7 @@ mutex cstddef mutex cstdint mutex cstdlib mutex cstring +mutex ctime mutex functional mutex initializer_list mutex iosfwd @@ -706,6 +716,8 @@ scoped_allocator variant scoped_allocator version semaphore atomic semaphore cstddef +semaphore cstdint +semaphore cstring semaphore ctime semaphore iosfwd semaphore limits diff --git a/libcxx/test/libcxx/transitive_includes/cxx17.csv b/libcxx/test/libcxx/transitive_includes/cxx17.csv index 28bf5a5b943c66..cc5075fe139f4a 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx17.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx17.csv @@ -74,6 +74,7 @@ barrier ratio barrier stdexcept barrier type_traits barrier variant +barrier version bit cstdint bit cstdlib bit iosfwd @@ -162,6 +163,7 @@ condition_variable cstddef condition_variable cstdint condition_variable cstdlib condition_variable cstring +condition_variable ctime condition_variable initializer_list condition_variable iosfwd condition_variable limits @@ -462,7 +464,14 @@ iterator utility iterator variant iterator version latch atomic +latch cstddef +latch cstdint +latch cstring +latch ctime +latch iosfwd latch limits +latch ratio +latch type_traits latch version limits type_traits limits version @@ -555,6 +564,7 @@ mutex cstddef mutex cstdint mutex cstdlib mutex cstring +mutex ctime mutex functional mutex initializer_list mutex iosfwd @@ -706,6 +716,8 @@ scoped_allocator variant scoped_allocator version semaphore atomic semaphore cstddef +semaphore cstdint +semaphore cstring semaphore ctime semaphore iosfwd semaphore limits diff --git a/libcxx/test/libcxx/transitive_includes/cxx20.csv b/libcxx/test/libcxx/transitive_includes/cxx20.csv index 0d0c9360fc875f..4a892ae5e17be9 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx20.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx20.csv @@ -72,6 +72,7 @@ barrier ratio barrier stdexcept barrier type_traits barrier variant +barrier version bit cstdint bit cstdlib bit iosfwd @@ -169,6 +170,7 @@ condition_variable cstddef condition_variable cstdint condition_variable cstdlib condition_variable cstring +condition_variable ctime condition_variable initializer_list condition_variable iosfwd condition_variable limits @@ -468,7 +470,14 @@ iterator utility iterator variant iterator version latch atomic +latch cstddef +latch cstdint +latch cstring +latch ctime +latch iosfwd latch limits +latch ratio +latch type_traits latch version limits type_traits limits version @@ -561,6 +570,7 @@ mutex cstddef mutex cstdint mutex cstdlib mutex cstring +mutex ctime mutex functional mutex initializer_list mutex iosfwd @@ -712,6 +722,8 @@ scoped_allocator variant scoped_allocator version semaphore atomic semaphore cstddef +semaphore cstdint +semaphore cstring semaphore ctime semaphore iosfwd semaphore limits diff --git a/libcxx/test/libcxx/transitive_includes/cxx2b.csv b/libcxx/test/libcxx/transitive_includes/cxx2b.csv index 755c5cb7cab028..06ee226d91bf82 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx2b.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx2b.csv @@ -34,7 +34,6 @@ atomic iosfwd atomic limits atomic ratio atomic version -barrier atomic barrier cstddef barrier cstdint barrier cstring @@ -43,6 +42,7 @@ barrier iosfwd barrier limits barrier new barrier ratio +barrier version bit cstdint bit cstdlib bit limits @@ -109,11 +109,11 @@ complex stdexcept complex version concepts cstddef concepts version -condition_variable atomic condition_variable cstddef condition_variable cstdint condition_variable cstdlib condition_variable cstring +condition_variable ctime condition_variable initializer_list condition_variable iosfwd condition_variable limits @@ -273,7 +273,6 @@ fstream string fstream typeinfo fstream version functional array -functional atomic functional cstddef functional cstdint functional cstdlib @@ -290,7 +289,6 @@ functional typeinfo functional unordered_map functional vector functional version -future atomic future cstddef future cstdint future cstdlib @@ -310,7 +308,6 @@ future version initializer_list cstddef iomanip istream iomanip version -ios atomic ios cctype ios cstddef ios cstdint @@ -339,8 +336,13 @@ iterator iosfwd iterator limits iterator variant iterator version -latch atomic +latch cstddef +latch cstdint +latch cstring +latch ctime +latch iosfwd latch limits +latch ratio latch version limits version list compare @@ -380,7 +382,6 @@ map optional map stdexcept map tuple map version -memory atomic memory compare memory cstddef memory cstdint @@ -402,11 +403,11 @@ memory_resource new memory_resource stdexcept memory_resource tuple memory_resource version -mutex atomic mutex cstddef mutex cstdint mutex cstdlib mutex cstring +mutex ctime mutex initializer_list mutex iosfwd mutex limits @@ -435,7 +436,6 @@ optional limits optional new optional stdexcept optional version -ostream atomic ostream bitset ostream cstddef ostream cstdint @@ -505,8 +505,9 @@ scoped_allocator limits scoped_allocator new scoped_allocator tuple scoped_allocator version -semaphore atomic semaphore cstddef +semaphore cstdint +semaphore cstring semaphore ctime semaphore iosfwd semaphore limits diff --git a/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp b/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp index de24bc2580ec6a..b2d83f0a6fe881 100644 --- a/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp +++ b/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp @@ -14,6 +14,7 @@ #include #include +#include #include "test_macros.h" diff --git a/libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp b/libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp index 34559f0e1382c7..058db2dc3ab049 100644 --- a/libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp +++ b/libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp @@ -84,8 +84,9 @@ // }; #include -#include #include +#include +#include #include diff --git a/libcxx/test/support/atomic_helpers.h b/libcxx/test/support/atomic_helpers.h index cc8e80cbfcacf6..9bc77c9979b1ec 100644 --- a/libcxx/test/support/atomic_helpers.h +++ b/libcxx/test/support/atomic_helpers.h @@ -10,6 +10,7 @@ #define ATOMIC_HELPERS_H #include +#include #include "test_macros.h" diff --git a/libcxx/utils/data/ignore_format.txt b/libcxx/utils/data/ignore_format.txt index a4defede15520c..387f4c5f36d495 100644 --- a/libcxx/utils/data/ignore_format.txt +++ b/libcxx/utils/data/ignore_format.txt @@ -212,7 +212,6 @@ libcxx/include/__algorithm/unwrap_range.h libcxx/include/__algorithm/upper_bound.h libcxx/include/any libcxx/include/array -libcxx/include/atomic libcxx/include/__atomic/atomic_base.h libcxx/include/__atomic/atomic_flag.h libcxx/include/__atomic/atomic.h