[libcxx-commits] [libcxx] [libc++] Remove <atomic> includes from <stop_token> (PR #201710)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jun 8 00:48:47 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Nikolas Klauser (philnik777)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/201710.diff
7 Files Affected:
- (modified) libcxx/include/__stop_token/atomic_unique_lock.h (+2-1)
- (modified) libcxx/include/__stop_token/intrusive_shared_ptr.h (-1)
- (modified) libcxx/include/__stop_token/stop_state.h (+2-1)
- (modified) libcxx/include/condition_variable (+4-1)
- (modified) libcxx/include/stop_token (+4)
- (modified) libcxx/include/thread (+5)
- (modified) libcxx/test/libcxx/transitive_includes/cxx26.csv (-3)
``````````diff
diff --git a/libcxx/include/__stop_token/atomic_unique_lock.h b/libcxx/include/__stop_token/atomic_unique_lock.h
index 0792331413f52..79baa3b408464 100644
--- a/libcxx/include/__stop_token/atomic_unique_lock.h
+++ b/libcxx/include/__stop_token/atomic_unique_lock.h
@@ -10,9 +10,10 @@
#ifndef _LIBCPP___STOP_TOKEN_ATOMIC_UNIQUE_LOCK_H
#define _LIBCPP___STOP_TOKEN_ATOMIC_UNIQUE_LOCK_H
+#include <__atomic/atomic.h>
+#include <__atomic/memory_order.h>
#include <__bit/has_single_bit.h>
#include <__config>
-#include <atomic>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__stop_token/intrusive_shared_ptr.h b/libcxx/include/__stop_token/intrusive_shared_ptr.h
index 0d5ffe0647166..05fe9b8acb6d0 100644
--- a/libcxx/include/__stop_token/intrusive_shared_ptr.h
+++ b/libcxx/include/__stop_token/intrusive_shared_ptr.h
@@ -10,7 +10,6 @@
#ifndef _LIBCPP___STOP_TOKEN_INTRUSIVE_SHARED_PTR_H
#define _LIBCPP___STOP_TOKEN_INTRUSIVE_SHARED_PTR_H
-#include <__atomic/atomic.h>
#include <__atomic/memory_order.h>
#include <__config>
#include <__cstddef/nullptr_t.h>
diff --git a/libcxx/include/__stop_token/stop_state.h b/libcxx/include/__stop_token/stop_state.h
index 74fafbdc637af..7f76392bd014a 100644
--- a/libcxx/include/__stop_token/stop_state.h
+++ b/libcxx/include/__stop_token/stop_state.h
@@ -11,11 +11,12 @@
#define _LIBCPP___STOP_TOKEN_STOP_STATE_H
#include <__assert>
+#include <__atomic/atomic.h>
+#include <__atomic/memory_order.h>
#include <__config>
#include <__stop_token/atomic_unique_lock.h>
#include <__stop_token/intrusive_list_view.h>
#include <__thread/id.h>
-#include <atomic>
#include <cstdint>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/condition_variable b/libcxx/include/condition_variable
index a6b5f842f3bc8..0018b89f362af 100644
--- a/libcxx/include/condition_variable
+++ b/libcxx/include/condition_variable
@@ -350,8 +350,11 @@ _LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
-# if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 20
+# if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 23
# include <atomic>
+# endif
+
+# if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 20
# include <concepts>
# include <cstdint>
# include <cstdlib>
diff --git a/libcxx/include/stop_token b/libcxx/include/stop_token
index 155b971d5edd9..dcfa6d44788ba 100644
--- a/libcxx/include/stop_token
+++ b/libcxx/include/stop_token
@@ -52,6 +52,10 @@ namespace std {
# endif // _LIBCPP_HAS_THREADS
+# if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 23
+# include <atomic>
+# endif
+
# if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 20
# include <cstddef>
# include <iosfwd>
diff --git a/libcxx/include/thread b/libcxx/include/thread
index f252273ebadcd..1c804bdd55dd6 100644
--- a/libcxx/include/thread
+++ b/libcxx/include/thread
@@ -128,6 +128,11 @@ void sleep_for(const chrono::duration<Rep, Period>& rel_time);
# include <system_error>
# include <type_traits>
# endif
+
+# if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 23
+# include <atomic>
+# endif
+
#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
#endif // _LIBCPP_THREAD
diff --git a/libcxx/test/libcxx/transitive_includes/cxx26.csv b/libcxx/test/libcxx/transitive_includes/cxx26.csv
index d531d60ae3e35..1450a13e125ef 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx26.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx26.csv
@@ -180,7 +180,6 @@ complex tuple
complex typeinfo
complex version
concepts version
-condition_variable atomic
condition_variable cerrno
condition_variable climits
condition_variable cstdint
@@ -876,7 +875,6 @@ stack limits
stack stdexcept
stack tuple
stack version
-stop_token atomic
stop_token climits
stop_token cstdint
stop_token cstring
@@ -1009,7 +1007,6 @@ system_error string_view
system_error tuple
system_error version
thread array
-thread atomic
thread bitset
thread cctype
thread cerrno
``````````
</details>
https://github.com/llvm/llvm-project/pull/201710
More information about the libcxx-commits
mailing list