diff --git a/include/atomic b/include/atomic index f55e28ff5..34a2a58b2 100644 --- a/include/atomic +++ b/include/atomic @@ -1741,7 +1741,7 @@ typedef struct atomic_flag atomic_flag() _NOEXCEPT : __a_() {} #endif // _LIBCPP_CXX03_LANG - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR atomic_flag(bool __b) _NOEXCEPT : __a_(__b) {} // EXTENSION #ifndef _LIBCPP_CXX03_LANG diff --git a/test/libcxx/atomics/atomics.flag/init_bool.pass.cpp b/test/libcxx/atomics/atomics.flag/init_bool.pass.cpp index d7b172cd1..1a8b32034 100644 --- a/test/libcxx/atomics/atomics.flag/init_bool.pass.cpp +++ b/test/libcxx/atomics/atomics.flag/init_bool.pass.cpp @@ -18,8 +18,15 @@ #include #include + // Ensure that static initialization happens; this is PR#37226 +extern std::atomic_flag global; +struct X { X() { global.test_and_set(); }}; +X x; +std::atomic_flag global = ATOMIC_FLAG_INIT; + int main() { + assert(global.test_and_set() == 1); { std::atomic_flag f(false); assert(f.test_and_set() == 0);