[libcxx-commits] [libcxx] [libc++] Make atomic contention tables constinit (PR #207456)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Fri Jul 3 12:34:56 PDT 2026


https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/207456

None

>From 663e261ad6b059b9d98b66063aab3e370c4d26f8 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Fri, 3 Jul 2026 12:03:26 -0400
Subject: [PATCH] [libc++] Make atomic contention tables constinit

---
 libcxx/src/atomic.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libcxx/src/atomic.cpp b/libcxx/src/atomic.cpp
index ae79ac7f87965..53aec09dfc2a0 100644
--- a/libcxx/src/atomic.cpp
+++ b/libcxx/src/atomic.cpp
@@ -422,7 +422,7 @@ struct alignas(
   constexpr __contention_state_native() : __waiter_count(0) {}
 };
 
-static __contention_state_native __contention_table_native[__contention_table_size];
+static constinit __contention_state_native __contention_table_native[__contention_table_size];
 
 static __cxx_atomic_contention_t* __get_native_waiter_count(void const* p) {
   return &__contention_table_native[__contention_hasher(p) & (__contention_table_size - 1)].__waiter_count;
@@ -438,7 +438,7 @@ struct alignas(
   constexpr __contention_state_global() : __waiter_count(0), __platform_state(0) {}
 };
 
-static __contention_state_global __contention_table_global[__contention_table_size];
+static constinit __contention_state_global __contention_table_global[__contention_table_size];
 
 static __contention_state_global* __get_global_contention_state(void const* p) {
   return &__contention_table_global[__contention_hasher(p) & (__contention_table_size - 1)];



More information about the libcxx-commits mailing list