aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeev Patel <dkp10000@gmail.com>2024-06-06 11:53:25 +0100
committerJonathan Wakely <jwakely@redhat.com>2024-06-08 15:51:40 +0100
commitae91b5dd14920ff9671db8ff80c0d763d25f977f (patch)
treef5687c013f8dd061ea3de9c71537578ba4fdf727
parent0bb1db32ccf54a9de59bea718f7575f7ef22abf5 (diff)
downloadgcc-ae91b5dd14920ff9671db8ff80c0d763d25f977f.zip
gcc-ae91b5dd14920ff9671db8ff80c0d763d25f977f.tar.gz
gcc-ae91b5dd14920ff9671db8ff80c0d763d25f977f.tar.bz2
libstdc++: Add missing constexpr to __atomic_impl::__clear_padding
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>
-rw-r--r--libstdc++-v3/include/bits/atomic_base.h2
-rw-r--r--libstdc++-v3/testsuite/29_atomics/atomic_float/constinit.cc3
2 files changed, 4 insertions, 1 deletions
diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h
index 062f154..20901b7 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<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
index 0000000..6b3f4f7
--- /dev/null
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_float/constinit.cc
@@ -0,0 +1,3 @@
+// { dg-do compile { target c++20 } }
+#include <atomic>
+constinit std::atomic<float> a(0.0f);