From: Deev Patel Date: Thu, 6 Jun 2024 10:53:25 +0000 (+0100) Subject: libstdc++: Add missing constexpr to __atomic_impl::__clear_padding X-Git-Tag: basepoints/gcc-16~8435 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ae91b5dd14920ff9671db8ff80c0d763d25f977f;p=thirdparty%2Fgcc.git libstdc++: Add missing constexpr to __atomic_impl::__clear_padding This is called from the std::atomic constructor, which needs to be usable in constant expressions. libstdc++-v3/ChangeLog: * include/bits/atomic_base.h (__atomic_impl::__clear_padding): Add missing constexpr specifier. * testsuite/29_atomics/atomic_float/constinit.cc: New test. Co-authored-by: Jonathan Wakely --- diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 062f15497403..20901b7fc06f 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -968,7 +968,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template - _GLIBCXX_ALWAYS_INLINE _Tp* + _GLIBCXX_ALWAYS_INLINE _GLIBCXX14_CONSTEXPR _Tp* __clear_padding(_Tp& __val) noexcept { auto* __ptr = std::__addressof(__val); diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_float/constinit.cc b/libstdc++-v3/testsuite/29_atomics/atomic_float/constinit.cc new file mode 100644 index 000000000000..6b3f4f76b4cc --- /dev/null +++ b/libstdc++-v3/testsuite/29_atomics/atomic_float/constinit.cc @@ -0,0 +1,3 @@ +// { dg-do compile { target c++20 } } +#include +constinit std::atomic a(0.0f);