[libcxx-commits] [libcxx] [libcxxabi] [libc++] Remove _LIBCPP_CONSTINIT (PR #171802)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jan 19 07:18:05 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Nikolas Klauser (philnik777)
<details>
<summary>Changes</summary>
`_LIBCPP_CONSTINIT` is only ever used inside `src/`, so we can just replace it with `constinit` instead.
---
Full diff: https://github.com/llvm/llvm-project/pull/171802.diff
7 Files Affected:
- (modified) libcxx/.clang-format (-1)
- (modified) libcxx/include/__config (-8)
- (modified) libcxxabi/src/cxa_guard_impl.h (+1-1)
- (modified) libcxxabi/src/fallback_malloc.cpp (+2-2)
- (modified) libcxxabi/test/guard_test_basic.pass.cpp (+1-1)
- (modified) libcxxabi/test/guard_threaded_test.pass.cpp (+1-1)
- (modified) libcxxabi/test/test_fallback_malloc.pass.cpp (+1-1)
``````````diff
diff --git a/libcxx/.clang-format b/libcxx/.clang-format
index 38f8fdb0703f6..9a455d304eb56 100644
--- a/libcxx/.clang-format
+++ b/libcxx/.clang-format
@@ -26,7 +26,6 @@ AttributeMacros: [
'_LIBCPP_CONSTEXPR_SINCE_CXX20',
'_LIBCPP_CONSTEXPR_SINCE_CXX23',
'_LIBCPP_CONSTEXPR',
- '_LIBCPP_CONSTINIT',
'_LIBCPP_DEPRECATED_IN_CXX11',
'_LIBCPP_DEPRECATED_IN_CXX14',
'_LIBCPP_DEPRECATED_IN_CXX17',
diff --git a/libcxx/include/__config b/libcxx/include/__config
index eb61544c46dbe..2a4abfd469d9e 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -731,14 +731,6 @@ typedef __char32_t char32_t;
# define _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
# endif
-# if _LIBCPP_STD_VER >= 20
-# define _LIBCPP_CONSTINIT constinit
-# elif __has_attribute(__require_constant_initialization__)
-# define _LIBCPP_CONSTINIT __attribute__((__require_constant_initialization__))
-# else
-# define _LIBCPP_CONSTINIT
-# endif
-
# if defined(__CUDACC__) || defined(__CUDA_ARCH__) || defined(__CUDA_LIBDEVICE__)
// The CUDA SDK contains an unfortunate definition for the __noinline__ macro,
// which breaks the regular __attribute__((__noinline__)) syntax. Therefore,
diff --git a/libcxxabi/src/cxa_guard_impl.h b/libcxxabi/src/cxa_guard_impl.h
index 191a589176b1a..5f51e81c57209 100644
--- a/libcxxabi/src/cxa_guard_impl.h
+++ b/libcxxabi/src/cxa_guard_impl.h
@@ -637,7 +637,7 @@ struct GlobalStatic {
static T instance;
};
template <class T>
-_LIBCPP_CONSTINIT T GlobalStatic<T>::instance = {};
+constinit T GlobalStatic<T>::instance = {};
enum class Implementation { NoThreads, GlobalMutex, Futex };
diff --git a/libcxxabi/src/fallback_malloc.cpp b/libcxxabi/src/fallback_malloc.cpp
index 6a261e6f009fe..81195c9a4dc17 100644
--- a/libcxxabi/src/fallback_malloc.cpp
+++ b/libcxxabi/src/fallback_malloc.cpp
@@ -35,9 +35,9 @@ namespace {
// When POSIX threads are not available, make the mutex operations a nop
#ifndef _LIBCXXABI_HAS_NO_THREADS
-static _LIBCPP_CONSTINIT std::__libcpp_mutex_t heap_mutex = _LIBCPP_MUTEX_INITIALIZER;
+static constinit std::__libcpp_mutex_t heap_mutex = _LIBCPP_MUTEX_INITIALIZER;
#else
-static _LIBCPP_CONSTINIT void* heap_mutex = 0;
+static constinit void* heap_mutex = 0;
#endif
class mutexor {
diff --git a/libcxxabi/test/guard_test_basic.pass.cpp b/libcxxabi/test/guard_test_basic.pass.cpp
index dca906a1aae7d..feb9e1c962f29 100644
--- a/libcxxabi/test/guard_test_basic.pass.cpp
+++ b/libcxxabi/test/guard_test_basic.pass.cpp
@@ -6,7 +6,7 @@
//
//===----------------------------------------------------------------------===//
//
-// UNSUPPORTED: c++03
+// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// Necessary because we include a private header of libc++abi, which
// only understands _LIBCXXABI_HAS_NO_THREADS.
diff --git a/libcxxabi/test/guard_threaded_test.pass.cpp b/libcxxabi/test/guard_threaded_test.pass.cpp
index 78dafba7f7ecd..d898e60288aca 100644
--- a/libcxxabi/test/guard_threaded_test.pass.cpp
+++ b/libcxxabi/test/guard_threaded_test.pass.cpp
@@ -6,7 +6,7 @@
//
//===----------------------------------------------------------------------===//
-// UNSUPPORTED: c++03
+// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// UNSUPPORTED: no-threads
// UNSUPPORTED: no-exceptions
diff --git a/libcxxabi/test/test_fallback_malloc.pass.cpp b/libcxxabi/test/test_fallback_malloc.pass.cpp
index c8a6a0797510d..379fe57295cba 100644
--- a/libcxxabi/test/test_fallback_malloc.pass.cpp
+++ b/libcxxabi/test/test_fallback_malloc.pass.cpp
@@ -13,7 +13,7 @@
#include <__thread/support.h>
-// UNSUPPORTED: c++03
+// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// UNSUPPORTED: modules-build && no-threads
// Necessary because we include a private source file of libc++abi, which
``````````
</details>
https://github.com/llvm/llvm-project/pull/171802
More information about the libcxx-commits
mailing list