[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