libstdc++: Fix required alignment computation for floating points [PR122267]

Before the r16-4349-g90dde804626f13 the required alignment of floating point,
and pointer specialization used __alignof__(_Vt) as required_alignment, and
mentioned commit changed them to alignof(_Vt). This values differs on i686
for double, as alignof(double) is 4, and __alignof__(double) is 8.

This patch restores the previous behavior.

	PR libstdc++/122267

libstdc++-v3/ChangeLog:

	* include/bits/atomic_base.h
	(__atomic_ref_base<const _Tp>::_S_required_alignment):
	Use __alignof__	instead of alignof.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
This commit is contained in:
Tomasz Kamiński 2025-10-14 11:06:35 +02:00
parent 1516bce38d
commit 599d2902b0
1 changed files with 1 additions and 1 deletions

View File

@ -1538,7 +1538,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_S_required_aligment()
{
if constexpr (is_floating_point_v<_Vt> || is_pointer_v<_Vt>)
return alignof(_Vt);
return __alignof__(_Vt);
else if constexpr ((sizeof(_Vt) & (sizeof(_Vt) - 1)) || sizeof(_Vt) > 16)
return alignof(_Vt);
else