]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Add missing constexpr to __atomic_impl::__clear_padding
authorDeev Patel <dkp10000@gmail.com>
Thu, 6 Jun 2024 10:53:25 +0000 (11:53 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Sat, 8 Jun 2024 14:51:40 +0000 (15:51 +0100)
This is called from the std::atomic<floating-point-type> 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 <jwakely@redhat.com>
libstdc++-v3/include/bits/atomic_base.h
libstdc++-v3/testsuite/29_atomics/atomic_float/constinit.cc [new file with mode: 0644]

index 062f154974031e6ed72e52bba2de9e6381b9cc32..20901b7fc06f774860f11c6c8ae8c4444e53003b 100644 (file)
@@ -968,7 +968,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }
 
     template<typename _Tp>
-      _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 (file)
index 0000000..6b3f4f7
--- /dev/null
@@ -0,0 +1,3 @@
+// { dg-do compile { target c++20 } }
+#include <atomic>
+constinit std::atomic<float> a(0.0f);