[libcxx-commits] [libcxx] [libc++] Remove <atomic> includes from <stop_token> (PR #201710)
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jun 4 16:00:53 PDT 2026
https://github.com/philnik777 created https://github.com/llvm/llvm-project/pull/201710
None
>From d1a5a7f5959a6e2eeca2ff0e3071b65aa2c328fd Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Fri, 5 Jun 2026 00:56:24 +0200
Subject: [PATCH] [libc++] Remove <atomic> includes from <stop_token>
---
libcxx/include/__stop_token/atomic_unique_lock.h | 2 +-
libcxx/include/__stop_token/intrusive_shared_ptr.h | 1 -
libcxx/include/__stop_token/stop_state.h | 2 +-
libcxx/include/condition_variable | 5 ++++-
libcxx/include/stop_token | 4 ++++
libcxx/include/thread | 5 +++++
libcxx/test/libcxx/transitive_includes/cxx26.csv | 3 ---
7 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/libcxx/include/__stop_token/atomic_unique_lock.h b/libcxx/include/__stop_token/atomic_unique_lock.h
index 0792331413f52..5dcb6d81dba71 100644
--- a/libcxx/include/__stop_token/atomic_unique_lock.h
+++ b/libcxx/include/__stop_token/atomic_unique_lock.h
@@ -10,9 +10,9 @@
#ifndef _LIBCPP___STOP_TOKEN_ATOMIC_UNIQUE_LOCK_H
#define _LIBCPP___STOP_TOKEN_ATOMIC_UNIQUE_LOCK_H
+#include <__atomic/atomic.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..5cdb5e3955825 100644
--- a/libcxx/include/__stop_token/stop_state.h
+++ b/libcxx/include/__stop_token/stop_state.h
@@ -11,11 +11,11 @@
#define _LIBCPP___STOP_TOKEN_STOP_STATE_H
#include <__assert>
+#include <__atomic/atomic.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 a5dc060fbfa38..75813dd53a32e 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_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 23
# include <atomic>
+# endif
+
+# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <concepts>
# include <cstdint>
# include <cstdlib>
diff --git a/libcxx/include/stop_token b/libcxx/include/stop_token
index 0572682a4286e..fb99092ddd99a 100644
--- a/libcxx/include/stop_token
+++ b/libcxx/include/stop_token
@@ -52,6 +52,10 @@ namespace std {
# endif // _LIBCPP_HAS_THREADS
+# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 23
+# include <atomic>
+# endif
+
# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <cstddef>
# include <iosfwd>
diff --git a/libcxx/include/thread b/libcxx/include/thread
index 029ed418e2070..5b3d3c02a83df 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_REMOVE_TRANSITIVE_INCLUDES) && _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
More information about the libcxx-commits
mailing list