gentle ping…
thanks
Iain

> On 27 Sep 2026, at 15:08, Iain Sandoe <[email protected]> wrote:
> 
> std/simd/arithmetic.cc fails everywhere on Darwin because libc there does
> not define __STDC_IEC_60559_COMPLEX__.  Fixed by using the compiler's
> indicator if libc does not emit one.  Tested on x86_64 linux/darwin,
> OK for trunk? thanks
> Iain
> 
> --- 8< ---
> 
> __STDC_IEC_60559_COMPLEX__ is not a compiler pre-define; it is provided
> by glibc but not necessarily by other libc implementations.
> 
> However the compiler does support Annex G and emits __GCC_IEC_559_COMPLEX
> to indicate this (where the value is > 0).  Use the compiler's value where
> __STDC_IEC_60559_COMPLEX__ is absent.
> 
> libstdc++-v3/ChangeLog:
> 
> * include/bits/simd_details.h: Use __GCC_IEC_559_COMPLEX to
> determine IEC60559 complex support.
> 
> Signed-off-by: Iain Sandoe <[email protected]>
> ---
> libstdc++-v3/include/bits/simd_details.h | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/libstdc++-v3/include/bits/simd_details.h 
> b/libstdc++-v3/include/bits/simd_details.h
> index 46eab585eb9..29a7195c539 100644
> --- a/libstdc++-v3/include/bits/simd_details.h
> +++ b/libstdc++-v3/include/bits/simd_details.h
> @@ -532,8 +532,13 @@ namespace simd
> 
> // C Annex G defines the behavior of complex<T> where T is IEC60559 
> floating-point. If
> // __STDC_IEC_60559_COMPLEX__ is defined then Annex G is implemented - and 
> simd<complex>
> - // will do so as well. However, Clang never defines the macro.
> -#if defined __STDC_IEC_60559_COMPLEX__ || defined __STDC_IEC_559_COMPLEX__ 
> || defined _GLIBCXX_CLANG
> + // will do so as well. However, __STDC_IEC_60559_COMPLEX__ is defined (if 
> at all)
> + // by the C library and will typically be absent on non-glibc targets.
> + // GCC nevertheless implements Annex G and std::complex relies on it; the 
> compiler
> + // emits __GCC_IEC_559_COMPLEX with value > 0 where it is enabled/valid.
> + // Clang is flagged to support it unconditionally.
> +#if defined __STDC_IEC_60559_COMPLEX__ || defined __STDC_IEC_559_COMPLEX__ \
> +      || (defined __GCC_IEC_559_COMPLEX && __GCC_IEC_559_COMPLEX > 0) || 
> defined _GLIBCXX_CLANG
>  + (1 << 10)
> #endif
> #if __SUPPORT_SNAN__
> -- 
> 2.50.1 (Apple Git-155)
> 

Reply via email to