mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
1516bce38d
commit
599d2902b0
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue