diff options
-rw-r--r-- | libcxx/include/atomic | 2 | ||||
-rw-r--r-- | libcxx/test/libcxx/atomics/atomics.flag/init_bool.pass.cpp | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/libcxx/include/atomic b/libcxx/include/atomic index f55e28ff5e9..34a2a58b20c 100644 --- a/libcxx/include/atomic +++ b/libcxx/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/libcxx/test/libcxx/atomics/atomics.flag/init_bool.pass.cpp b/libcxx/test/libcxx/atomics/atomics.flag/init_bool.pass.cpp index d7b172cd121..1a8b320343e 100644 --- a/libcxx/test/libcxx/atomics/atomics.flag/init_bool.pass.cpp +++ b/libcxx/test/libcxx/atomics/atomics.flag/init_bool.pass.cpp @@ -18,8 +18,15 @@ #include <atomic> #include <cassert> + // 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); |