[libcxx-commits] [libcxx] c01794e - [libc++] Move once_flag outside of <mutex>
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Aug 31 11:56:55 PDT 2023
Author: Louis Dionne
Date: 2023-08-31T14:56:42-04:00
New Revision: c01794e7ae8e37052e2268e7447d51665e073356
URL: https://github.com/llvm/llvm-project/commit/c01794e7ae8e37052e2268e7447d51665e073356
DIFF: https://github.com/llvm/llvm-project/commit/c01794e7ae8e37052e2268e7447d51665e073356.diff
LOG: [libc++] Move once_flag outside of <mutex>
This allows including once_flag directly from <__locale> instead of
depending on all of <mutex>, which requires threading. In turn, this
makes it easier to support locales on platforms without threading.
Drive-by change: clang-format once_flag.h and use _LIBCPP_HIDE_FROM_ABI
Differential Revision: https://reviews.llvm.org/D155487
Added:
libcxx/include/__mutex/once_flag.h
Modified:
libcxx/include/CMakeLists.txt
libcxx/include/__locale
libcxx/include/codecvt
libcxx/include/fstream
libcxx/include/ios
libcxx/include/locale
libcxx/include/module.modulemap.in
libcxx/include/mutex
libcxx/include/regex
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/cxx23.csv
libcxx/test/libcxx/transitive_includes/cxx26.csv
Removed:
################################################################################
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index 28028955606118..77a7269121ec14 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -543,6 +543,7 @@ set(files
__memory_resource/unsynchronized_pool_resource.h
__mutex/lock_guard.h
__mutex/mutex.h
+ __mutex/once_flag.h
__mutex/tag_types.h
__mutex/unique_lock.h
__node_handle
diff --git a/libcxx/include/__locale b/libcxx/include/__locale
index 5c060ab04c7688..ccac748c44e4f1 100644
--- a/libcxx/include/__locale
+++ b/libcxx/include/__locale
@@ -13,12 +13,12 @@
#include <__availability>
#include <__config>
#include <__memory/shared_ptr.h> // __shared_count
+#include <__mutex/once_flag.h>
#include <__type_traits/make_unsigned.h>
#include <cctype>
#include <clocale>
#include <cstdint>
#include <cstdlib>
-#include <mutex>
#include <string>
// Some platforms require more includes than others. Keep the includes on all plaforms for now.
diff --git a/libcxx/include/__mutex/once_flag.h b/libcxx/include/__mutex/once_flag.h
new file mode 100644
index 00000000000000..4d71cb38a1011c
--- /dev/null
+++ b/libcxx/include/__mutex/once_flag.h
@@ -0,0 +1,150 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCPP___MUTEX_ONCE_FLAG_H
+#define _LIBCPP___MUTEX_ONCE_FLAG_H
+
+#include <__config>
+#include <__functional/invoke.h>
+#include <__memory/shared_ptr.h> // __libcpp_acquire_load
+#include <__tuple/tuple_indices.h>
+#include <__tuple/tuple_size.h>
+#include <__utility/forward.h>
+#include <__utility/move.h>
+#include <cstdint>
+#ifndef _LIBCPP_CXX03_LANG
+# include <tuple>
+#endif
+
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+# pragma GCC system_header
+#endif
+
+_LIBCPP_BEGIN_NAMESPACE_STD
+
+struct _LIBCPP_TEMPLATE_VIS once_flag;
+
+#ifndef _LIBCPP_CXX03_LANG
+
+template <class _Callable, class... _Args>
+_LIBCPP_HIDE_FROM_ABI void call_once(once_flag&, _Callable&&, _Args&&...);
+
+#else // _LIBCPP_CXX03_LANG
+
+template <class _Callable>
+_LIBCPP_HIDE_FROM_ABI void call_once(once_flag&, _Callable&);
+
+template <class _Callable>
+_LIBCPP_HIDE_FROM_ABI void call_once(once_flag&, const _Callable&);
+
+#endif // _LIBCPP_CXX03_LANG
+
+struct _LIBCPP_TEMPLATE_VIS once_flag {
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR once_flag() _NOEXCEPT : __state_(0) {}
+ once_flag(const once_flag&) = delete;
+ once_flag& operator=(const once_flag&) = delete;
+
+#if defined(_LIBCPP_ABI_MICROSOFT)
+ typedef uintptr_t _State_type;
+#else
+ typedef unsigned long _State_type;
+#endif
+
+private:
+ _State_type __state_;
+
+#ifndef _LIBCPP_CXX03_LANG
+ template <class _Callable, class... _Args>
+ friend void call_once(once_flag&, _Callable&&, _Args&&...);
+#else // _LIBCPP_CXX03_LANG
+ template <class _Callable>
+ friend void call_once(once_flag&, _Callable&);
+
+ template <class _Callable>
+ friend void call_once(once_flag&, const _Callable&);
+#endif // _LIBCPP_CXX03_LANG
+};
+
+#ifndef _LIBCPP_CXX03_LANG
+
+template <class _Fp>
+class __call_once_param {
+ _Fp& __f_;
+
+public:
+ _LIBCPP_HIDE_FROM_ABI explicit __call_once_param(_Fp& __f) : __f_(__f) {}
+
+ _LIBCPP_HIDE_FROM_ABI void operator()() {
+ typedef typename __make_tuple_indices<tuple_size<_Fp>::value, 1>::type _Index;
+ __execute(_Index());
+ }
+
+private:
+ template <size_t... _Indices>
+ _LIBCPP_HIDE_FROM_ABI void __execute(__tuple_indices<_Indices...>) {
+ _VSTD::__invoke(_VSTD::get<0>(_VSTD::move(__f_)), _VSTD::get<_Indices>(_VSTD::move(__f_))...);
+ }
+};
+
+#else
+
+template <class _Fp>
+class __call_once_param {
+ _Fp& __f_;
+
+public:
+ _LIBCPP_HIDE_FROM_ABI explicit __call_once_param(_Fp& __f) : __f_(__f) {}
+
+ _LIBCPP_HIDE_FROM_ABI void operator()() { __f_(); }
+};
+
+#endif
+
+template <class _Fp>
+void _LIBCPP_HIDE_FROM_ABI __call_once_proxy(void* __vp) {
+ __call_once_param<_Fp>* __p = static_cast<__call_once_param<_Fp>*>(__vp);
+ (*__p)();
+}
+
+_LIBCPP_EXPORTED_FROM_ABI void __call_once(volatile once_flag::_State_type&, void*, void (*)(void*));
+
+#ifndef _LIBCPP_CXX03_LANG
+
+template <class _Callable, class... _Args>
+inline _LIBCPP_HIDE_FROM_ABI void call_once(once_flag& __flag, _Callable&& __func, _Args&&... __args) {
+ if (__libcpp_acquire_load(&__flag.__state_) != ~once_flag::_State_type(0)) {
+ typedef tuple<_Callable&&, _Args&&...> _Gp;
+ _Gp __f(_VSTD::forward<_Callable>(__func), _VSTD::forward<_Args>(__args)...);
+ __call_once_param<_Gp> __p(__f);
+ std::__call_once(__flag.__state_, &__p, &__call_once_proxy<_Gp>);
+ }
+}
+
+#else // _LIBCPP_CXX03_LANG
+
+template <class _Callable>
+inline _LIBCPP_HIDE_FROM_ABI void call_once(once_flag& __flag, _Callable& __func) {
+ if (__libcpp_acquire_load(&__flag.__state_) != ~once_flag::_State_type(0)) {
+ __call_once_param<_Callable> __p(__func);
+ std::__call_once(__flag.__state_, &__p, &__call_once_proxy<_Callable>);
+ }
+}
+
+template <class _Callable>
+inline _LIBCPP_HIDE_FROM_ABI void call_once(once_flag& __flag, const _Callable& __func) {
+ if (__libcpp_acquire_load(&__flag.__state_) != ~once_flag::_State_type(0)) {
+ __call_once_param<const _Callable> __p(__func);
+ std::__call_once(__flag.__state_, &__p, &__call_once_proxy<const _Callable>);
+ }
+}
+
+#endif // _LIBCPP_CXX03_LANG
+
+_LIBCPP_END_NAMESPACE_STD
+
+#endif // _LIBCPP___MUTEX_ONCE_FLAG_H
diff --git a/libcxx/include/codecvt b/libcxx/include/codecvt
index ef22bf0530635d..7a8c28d5594152 100644
--- a/libcxx/include/codecvt
+++ b/libcxx/include/codecvt
@@ -562,6 +562,7 @@ _LIBCPP_END_NAMESPACE_STD
# include <initializer_list>
# include <iosfwd>
# include <limits>
+# include <mutex>
# include <new>
# include <stdexcept>
# include <type_traits>
diff --git a/libcxx/include/fstream b/libcxx/include/fstream
index d30575e22a4669..cf5ca142e7d958 100644
--- a/libcxx/include/fstream
+++ b/libcxx/include/fstream
@@ -1752,6 +1752,7 @@ _LIBCPP_POP_MACROS
# include <cstdlib>
# include <iosfwd>
# include <limits>
+# include <mutex>
# include <new>
# include <stdexcept>
# include <type_traits>
diff --git a/libcxx/include/ios b/libcxx/include/ios
index 156f685564270a..a31a558d5103f4 100644
--- a/libcxx/include/ios
+++ b/libcxx/include/ios
@@ -1055,6 +1055,7 @@ _LIBCPP_END_NAMESPACE_STD
# include <cstring>
# include <initializer_list>
# include <limits>
+# include <mutex>
# include <new>
# include <stdexcept>
# include <system_error>
diff --git a/libcxx/include/locale b/libcxx/include/locale
index e8ce282344028a..8008ec2a0776a3 100644
--- a/libcxx/include/locale
+++ b/libcxx/include/locale
@@ -4355,6 +4355,7 @@ _LIBCPP_POP_MACROS
# include <concepts>
# include <cstdarg>
# include <iterator>
+# include <mutex>
# include <stdexcept>
# include <type_traits>
# include <typeinfo>
diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in
index 9c77bfe02ca59a..3b85b6a91a21d8 100644
--- a/libcxx/include/module.modulemap.in
+++ b/libcxx/include/module.modulemap.in
@@ -1575,6 +1575,7 @@ module std_private_memory_resource_unsynchronized_pool_resource [system] { heade
module std_private_mutex_lock_guard [system] { header "__mutex/lock_guard.h" }
module std_private_mutex_mutex [system] { header "__mutex/mutex.h" }
+module std_private_mutex_once_flag [system] { header "__mutex/once_flag.h" }
module std_private_mutex_tag_types [system] { header "__mutex/tag_types.h" }
module std_private_mutex_unique_lock [system] { header "__mutex/unique_lock.h" }
diff --git a/libcxx/include/mutex b/libcxx/include/mutex
index 320899a9e3ffa5..ec110c8c07dede 100644
--- a/libcxx/include/mutex
+++ b/libcxx/include/mutex
@@ -194,6 +194,7 @@ template<class Callable, class ...Args>
#include <__memory/shared_ptr.h>
#include <__mutex/lock_guard.h>
#include <__mutex/mutex.h>
+#include <__mutex/once_flag.h>
#include <__mutex/tag_types.h>
#include <__mutex/unique_lock.h>
#include <__thread/id.h>
@@ -555,157 +556,6 @@ _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(scoped_lock);
#endif // _LIBCPP_STD_VER >= 17
#endif // !_LIBCPP_HAS_NO_THREADS
-struct _LIBCPP_TEMPLATE_VIS once_flag;
-
-#ifndef _LIBCPP_CXX03_LANG
-
-template<class _Callable, class... _Args>
-_LIBCPP_INLINE_VISIBILITY
-void call_once(once_flag&, _Callable&&, _Args&&...);
-
-#else // _LIBCPP_CXX03_LANG
-
-template<class _Callable>
-_LIBCPP_INLINE_VISIBILITY
-void call_once(once_flag&, _Callable&);
-
-template<class _Callable>
-_LIBCPP_INLINE_VISIBILITY
-void call_once(once_flag&, const _Callable&);
-
-#endif // _LIBCPP_CXX03_LANG
-
-struct _LIBCPP_TEMPLATE_VIS once_flag
-{
- _LIBCPP_INLINE_VISIBILITY
- _LIBCPP_CONSTEXPR
- once_flag() _NOEXCEPT : __state_(0) {}
- once_flag(const once_flag&) = delete;
- once_flag& operator=(const once_flag&) = delete;
-
-#if defined(_LIBCPP_ABI_MICROSOFT)
- typedef uintptr_t _State_type;
-#else
- typedef unsigned long _State_type;
-#endif
-
-private:
- _State_type __state_;
-
-#ifndef _LIBCPP_CXX03_LANG
- template<class _Callable, class... _Args>
- friend
- void call_once(once_flag&, _Callable&&, _Args&&...);
-#else // _LIBCPP_CXX03_LANG
- template<class _Callable>
- friend
- void call_once(once_flag&, _Callable&);
-
- template<class _Callable>
- friend
- void call_once(once_flag&, const _Callable&);
-#endif // _LIBCPP_CXX03_LANG
-};
-
-#ifndef _LIBCPP_CXX03_LANG
-
-template <class _Fp>
-class __call_once_param
-{
- _Fp& __f_;
-public:
- _LIBCPP_INLINE_VISIBILITY
- explicit __call_once_param(_Fp& __f) : __f_(__f) {}
-
- _LIBCPP_INLINE_VISIBILITY
- void operator()()
- {
- typedef typename __make_tuple_indices<tuple_size<_Fp>::value, 1>::type _Index;
- __execute(_Index());
- }
-
-private:
- template <size_t ..._Indices>
- _LIBCPP_INLINE_VISIBILITY
- void __execute(__tuple_indices<_Indices...>)
- {
- _VSTD::__invoke(_VSTD::get<0>(_VSTD::move(__f_)), _VSTD::get<_Indices>(_VSTD::move(__f_))...);
- }
-};
-
-#else
-
-template <class _Fp>
-class __call_once_param
-{
- _Fp& __f_;
-public:
- _LIBCPP_INLINE_VISIBILITY
- explicit __call_once_param(_Fp& __f) : __f_(__f) {}
-
- _LIBCPP_INLINE_VISIBILITY
- void operator()()
- {
- __f_();
- }
-};
-
-#endif
-
-template <class _Fp>
-void _LIBCPP_INLINE_VISIBILITY
-__call_once_proxy(void* __vp)
-{
- __call_once_param<_Fp>* __p = static_cast<__call_once_param<_Fp>*>(__vp);
- (*__p)();
-}
-
-_LIBCPP_EXPORTED_FROM_ABI void __call_once(volatile once_flag::_State_type&, void*, void (*)(void*));
-
-#ifndef _LIBCPP_CXX03_LANG
-
-template<class _Callable, class... _Args>
-inline _LIBCPP_INLINE_VISIBILITY
-void
-call_once(once_flag& __flag, _Callable&& __func, _Args&&... __args)
-{
- if (__libcpp_acquire_load(&__flag.__state_) != ~once_flag::_State_type(0))
- {
- typedef tuple<_Callable&&, _Args&&...> _Gp;
- _Gp __f(_VSTD::forward<_Callable>(__func), _VSTD::forward<_Args>(__args)...);
- __call_once_param<_Gp> __p(__f);
- std::__call_once(__flag.__state_, &__p, &__call_once_proxy<_Gp>);
- }
-}
-
-#else // _LIBCPP_CXX03_LANG
-
-template<class _Callable>
-inline _LIBCPP_INLINE_VISIBILITY
-void
-call_once(once_flag& __flag, _Callable& __func)
-{
- if (__libcpp_acquire_load(&__flag.__state_) != ~once_flag::_State_type(0))
- {
- __call_once_param<_Callable> __p(__func);
- std::__call_once(__flag.__state_, &__p, &__call_once_proxy<_Callable>);
- }
-}
-
-template<class _Callable>
-inline _LIBCPP_INLINE_VISIBILITY
-void
-call_once(once_flag& __flag, const _Callable& __func)
-{
- if (__libcpp_acquire_load(&__flag.__state_) != ~once_flag::_State_type(0))
- {
- __call_once_param<const _Callable> __p(__func);
- std::__call_once(__flag.__state_, &__p, &__call_once_proxy<const _Callable>);
- }
-}
-
-#endif // _LIBCPP_CXX03_LANG
-
_LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
diff --git a/libcxx/include/regex b/libcxx/include/regex
index e62b9eec636f5e..ede112b92c6e59 100644
--- a/libcxx/include/regex
+++ b/libcxx/include/regex
@@ -6953,6 +6953,7 @@ _LIBCPP_POP_MACROS
# include <cstdlib>
# include <iosfwd>
# include <iterator>
+# include <mutex>
# include <new>
# include <type_traits>
# include <typeinfo>
diff --git a/libcxx/test/libcxx/transitive_includes/cxx03.csv b/libcxx/test/libcxx/transitive_includes/cxx03.csv
index 2487cb5d640594..02976e87092e4b 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx03.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx03.csv
@@ -404,6 +404,7 @@ iomanip istream
iomanip version
ios atomic
ios cctype
+ios cerrno
ios clocale
ios concepts
ios cstddef
@@ -802,8 +803,12 @@ stdexcept iosfwd
stop_token atomic
stop_token cstddef
stop_token cstdint
+stop_token cstring
+stop_token ctime
stop_token limits
+stop_token ratio
stop_token thread
+stop_token type_traits
stop_token version
streambuf cstdint
streambuf ios
diff --git a/libcxx/test/libcxx/transitive_includes/cxx11.csv b/libcxx/test/libcxx/transitive_includes/cxx11.csv
index 3f211ab8863c7b..e51c9be04a26cd 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx11.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx11.csv
@@ -146,6 +146,7 @@ codecvt mutex
codecvt new
codecvt stdexcept
codecvt string
+codecvt tuple
codecvt type_traits
codecvt typeinfo
codecvt version
@@ -354,6 +355,7 @@ fstream new
fstream ostream
fstream stdexcept
fstream string
+fstream tuple
fstream type_traits
fstream typeinfo
fstream version
@@ -404,6 +406,7 @@ iomanip istream
iomanip version
ios atomic
ios cctype
+ios cerrno
ios clocale
ios concepts
ios cstddef
@@ -419,6 +422,7 @@ ios new
ios stdexcept
ios string
ios system_error
+ios tuple
ios type_traits
ios typeinfo
ios version
@@ -501,6 +505,7 @@ locale new
locale stdexcept
locale streambuf
locale string
+locale tuple
locale type_traits
locale typeinfo
locale version
@@ -716,6 +721,7 @@ regex mutex
regex new
regex stdexcept
regex string
+regex tuple
regex type_traits
regex typeinfo
regex utility
@@ -803,8 +809,12 @@ stdexcept iosfwd
stop_token atomic
stop_token cstddef
stop_token cstdint
+stop_token cstring
+stop_token ctime
stop_token limits
+stop_token ratio
stop_token thread
+stop_token type_traits
stop_token version
streambuf cstdint
streambuf ios
diff --git a/libcxx/test/libcxx/transitive_includes/cxx14.csv b/libcxx/test/libcxx/transitive_includes/cxx14.csv
index 35701d508e4995..880b97a61deb91 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx14.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx14.csv
@@ -146,6 +146,7 @@ codecvt mutex
codecvt new
codecvt stdexcept
codecvt string
+codecvt tuple
codecvt type_traits
codecvt typeinfo
codecvt version
@@ -356,6 +357,7 @@ fstream new
fstream ostream
fstream stdexcept
fstream string
+fstream tuple
fstream type_traits
fstream typeinfo
fstream version
@@ -406,6 +408,7 @@ iomanip istream
iomanip version
ios atomic
ios cctype
+ios cerrno
ios clocale
ios concepts
ios cstddef
@@ -421,6 +424,7 @@ ios new
ios stdexcept
ios string
ios system_error
+ios tuple
ios type_traits
ios typeinfo
ios version
@@ -503,6 +507,7 @@ locale new
locale stdexcept
locale streambuf
locale string
+locale tuple
locale type_traits
locale typeinfo
locale version
@@ -718,6 +723,7 @@ regex mutex
regex new
regex stdexcept
regex string
+regex tuple
regex type_traits
regex typeinfo
regex utility
@@ -805,8 +811,12 @@ stdexcept iosfwd
stop_token atomic
stop_token cstddef
stop_token cstdint
+stop_token cstring
+stop_token ctime
stop_token limits
+stop_token ratio
stop_token thread
+stop_token type_traits
stop_token version
streambuf cstdint
streambuf ios
diff --git a/libcxx/test/libcxx/transitive_includes/cxx17.csv b/libcxx/test/libcxx/transitive_includes/cxx17.csv
index 35701d508e4995..880b97a61deb91 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx17.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx17.csv
@@ -146,6 +146,7 @@ codecvt mutex
codecvt new
codecvt stdexcept
codecvt string
+codecvt tuple
codecvt type_traits
codecvt typeinfo
codecvt version
@@ -356,6 +357,7 @@ fstream new
fstream ostream
fstream stdexcept
fstream string
+fstream tuple
fstream type_traits
fstream typeinfo
fstream version
@@ -406,6 +408,7 @@ iomanip istream
iomanip version
ios atomic
ios cctype
+ios cerrno
ios clocale
ios concepts
ios cstddef
@@ -421,6 +424,7 @@ ios new
ios stdexcept
ios string
ios system_error
+ios tuple
ios type_traits
ios typeinfo
ios version
@@ -503,6 +507,7 @@ locale new
locale stdexcept
locale streambuf
locale string
+locale tuple
locale type_traits
locale typeinfo
locale version
@@ -718,6 +723,7 @@ regex mutex
regex new
regex stdexcept
regex string
+regex tuple
regex type_traits
regex typeinfo
regex utility
@@ -805,8 +811,12 @@ stdexcept iosfwd
stop_token atomic
stop_token cstddef
stop_token cstdint
+stop_token cstring
+stop_token ctime
stop_token limits
+stop_token ratio
stop_token thread
+stop_token type_traits
stop_token version
streambuf cstdint
streambuf ios
diff --git a/libcxx/test/libcxx/transitive_includes/cxx20.csv b/libcxx/test/libcxx/transitive_includes/cxx20.csv
index 0db9a188bf28df..b0450629351311 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx20.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx20.csv
@@ -153,6 +153,7 @@ codecvt mutex
codecvt new
codecvt stdexcept
codecvt string
+codecvt tuple
codecvt type_traits
codecvt typeinfo
codecvt version
@@ -363,6 +364,7 @@ fstream new
fstream ostream
fstream stdexcept
fstream string
+fstream tuple
fstream type_traits
fstream typeinfo
fstream version
@@ -412,6 +414,7 @@ iomanip istream
iomanip version
ios atomic
ios cctype
+ios cerrno
ios clocale
ios concepts
ios cstddef
@@ -427,6 +430,7 @@ ios new
ios stdexcept
ios string
ios system_error
+ios tuple
ios type_traits
ios typeinfo
ios version
@@ -509,6 +513,7 @@ locale new
locale stdexcept
locale streambuf
locale string
+locale tuple
locale type_traits
locale typeinfo
locale version
@@ -724,6 +729,7 @@ regex mutex
regex new
regex stdexcept
regex string
+regex tuple
regex type_traits
regex typeinfo
regex utility
diff --git a/libcxx/test/libcxx/transitive_includes/cxx23.csv b/libcxx/test/libcxx/transitive_includes/cxx23.csv
index 50a0bcfbca0c4a..bd3ab60f5756c6 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx23.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx23.csv
@@ -99,10 +99,10 @@ codecvt cwchar
codecvt initializer_list
codecvt iosfwd
codecvt limits
-codecvt mutex
codecvt new
codecvt stdexcept
codecvt string
+codecvt tuple
codecvt typeinfo
codecvt version
compare cmath
@@ -250,11 +250,11 @@ fstream initializer_list
fstream iosfwd
fstream istream
fstream limits
-fstream mutex
fstream new
fstream ostream
fstream stdexcept
fstream string
+fstream tuple
fstream typeinfo
fstream version
functional array
@@ -292,19 +292,22 @@ initializer_list cstddef
iomanip istream
iomanip version
ios cctype
+ios cerrno
ios clocale
ios cstddef
ios cstdint
ios cstdlib
ios cstring
+ios ctime
ios cwchar
ios initializer_list
ios iosfwd
ios limits
-ios mutex
ios new
+ios ratio
ios stdexcept
ios string
+ios tuple
ios typeinfo
ios version
iosfwd version
@@ -357,11 +360,11 @@ locale initializer_list
locale ios
locale iosfwd
locale limits
-locale mutex
locale new
locale stdexcept
locale streambuf
locale string
+locale tuple
locale typeinfo
locale version
map compare
@@ -516,10 +519,10 @@ regex deque
regex initializer_list
regex iosfwd
regex limits
-regex mutex
regex new
regex stdexcept
regex string
+regex tuple
regex typeinfo
regex vector
regex version
diff --git a/libcxx/test/libcxx/transitive_includes/cxx26.csv b/libcxx/test/libcxx/transitive_includes/cxx26.csv
index 50a0bcfbca0c4a..bd3ab60f5756c6 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx26.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx26.csv
@@ -99,10 +99,10 @@ codecvt cwchar
codecvt initializer_list
codecvt iosfwd
codecvt limits
-codecvt mutex
codecvt new
codecvt stdexcept
codecvt string
+codecvt tuple
codecvt typeinfo
codecvt version
compare cmath
@@ -250,11 +250,11 @@ fstream initializer_list
fstream iosfwd
fstream istream
fstream limits
-fstream mutex
fstream new
fstream ostream
fstream stdexcept
fstream string
+fstream tuple
fstream typeinfo
fstream version
functional array
@@ -292,19 +292,22 @@ initializer_list cstddef
iomanip istream
iomanip version
ios cctype
+ios cerrno
ios clocale
ios cstddef
ios cstdint
ios cstdlib
ios cstring
+ios ctime
ios cwchar
ios initializer_list
ios iosfwd
ios limits
-ios mutex
ios new
+ios ratio
ios stdexcept
ios string
+ios tuple
ios typeinfo
ios version
iosfwd version
@@ -357,11 +360,11 @@ locale initializer_list
locale ios
locale iosfwd
locale limits
-locale mutex
locale new
locale stdexcept
locale streambuf
locale string
+locale tuple
locale typeinfo
locale version
map compare
@@ -516,10 +519,10 @@ regex deque
regex initializer_list
regex iosfwd
regex limits
-regex mutex
regex new
regex stdexcept
regex string
+regex tuple
regex typeinfo
regex vector
regex version
More information about the libcxx-commits
mailing list