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

franz.sirl-kernel@lauterbach.com franz.sirl-kernel@lauterbach.com
Wed Oct 15 15:15:37 GMT 2025


Am 2025-10-14 um 15:00 schrieb Tomasz Kamiński:
> 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>
> ---
> v2 fixes spelling of alignment in commit message.
> Pushed to trunk.
> 
>   libstdc++-v3/include/bits/atomic_base.h | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h
> index 0f3f6b1925d..7e4ad2b1272 100644
> --- a/libstdc++-v3/include/bits/atomic_base.h
> +++ b/libstdc++-v3/include/bits/atomic_base.h
> @@ -1538,7 +1538,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>         _S_required_aligment()

The method name itself and it's single use still have the "aligment" typo.

>         {
>   	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



More information about the Libstdc++ mailing list