diff -up glibc-2.33/bits/floatn-common.h.92~ glibc-2.33/bits/floatn-common.h --- glibc-2.33/bits/floatn-common.h.92~ 2021-02-01 18:15:33.000000000 +0100 +++ glibc-2.33/bits/floatn-common.h 2021-07-10 03:25:10.190826118 +0200 @@ -145,7 +145,7 @@ typedef _Complex float __cfloat16 __attr # endif # if __HAVE_FLOAT32 -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined __clang__ # define __CFLOAT32 _Complex float # else # define __CFLOAT32 _Complex _Float32 @@ -153,7 +153,7 @@ typedef _Complex float __cfloat16 __attr # endif # if __HAVE_FLOAT64 -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined __clang__ # ifdef __NO_LONG_DOUBLE_MATH # define __CFLOAT64 _Complex long double # else @@ -165,7 +165,7 @@ typedef _Complex float __cfloat16 __attr # endif # if __HAVE_FLOAT32X -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined __clang__ # define __CFLOAT32X _Complex double # else # define __CFLOAT32X _Complex _Float32x @@ -173,7 +173,7 @@ typedef _Complex float __cfloat16 __attr # endif # if __HAVE_FLOAT64X -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined __clang__ # if __HAVE_FLOAT64X_LONG_DOUBLE # define __CFLOAT64X _Complex long double # else @@ -210,11 +210,11 @@ typedef float _Float16 __attribute__ ((_ # if __HAVE_FLOAT32 -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) typedef float _Float32; # endif -# if !__GNUC_PREREQ (7, 0) +# if !__GNUC_PREREQ (7, 0) || defined(__clang__) # define __builtin_huge_valf32() (__builtin_huge_valf ()) # define __builtin_inff32() (__builtin_inff ()) # define __builtin_nanf32(x) (__builtin_nanf (x)) @@ -234,11 +234,11 @@ typedef float _Float32; # ifdef __NO_LONG_DOUBLE_MATH -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) typedef long double _Float64; # endif -# if !__GNUC_PREREQ (7, 0) +# if !__GNUC_PREREQ (7, 0) || defined(__clang__) # define __builtin_huge_valf64() (__builtin_huge_vall ()) # define __builtin_inff64() (__builtin_infl ()) # define __builtin_nanf64(x) (__builtin_nanl (x)) @@ -247,11 +247,11 @@ typedef long double _Float64; # else -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) typedef double _Float64; # endif -# if !__GNUC_PREREQ (7, 0) +# if !__GNUC_PREREQ (7, 0) || defined(__clang__) # define __builtin_huge_valf64() (__builtin_huge_val ()) # define __builtin_inff64() (__builtin_inf ()) # define __builtin_nanf64(x) (__builtin_nan (x)) @@ -264,11 +264,11 @@ typedef double _Float64; # if __HAVE_FLOAT32X -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) typedef double _Float32x; # endif -# if !__GNUC_PREREQ (7, 0) +# if !__GNUC_PREREQ (7, 0) || defined(__clang__) # define __builtin_huge_valf32x() (__builtin_huge_val ()) # define __builtin_inff32x() (__builtin_inf ()) # define __builtin_nanf32x(x) (__builtin_nan (x)) @@ -281,11 +281,11 @@ typedef double _Float32x; # if __HAVE_FLOAT64X_LONG_DOUBLE -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) typedef long double _Float64x; # endif -# if !__GNUC_PREREQ (7, 0) +# if !__GNUC_PREREQ (7, 0) || defined(__clang__) # define __builtin_huge_valf64x() (__builtin_huge_vall ()) # define __builtin_inff64x() (__builtin_infl ()) # define __builtin_nanf64x(x) (__builtin_nanl (x)) @@ -294,11 +294,11 @@ typedef long double _Float64x; # else -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) typedef _Float128 _Float64x; # endif -# if !__GNUC_PREREQ (7, 0) +# if !__GNUC_PREREQ (7, 0) || defined(__clang__) # define __builtin_huge_valf64x() (__builtin_huge_valf128 ()) # define __builtin_inff64x() (__builtin_inff128 ()) # define __builtin_nanf64x(x) (__builtin_nanf128 (x)) @@ -311,11 +311,11 @@ typedef _Float128 _Float64x; # if __HAVE_FLOAT128X -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) # error "_Float128x supported but no type" # endif -# if !__GNUC_PREREQ (7, 0) +# if !__GNUC_PREREQ (7, 0) || defined(__clang__) # define __builtin_huge_valf128x() ((_Float128x) __builtin_huge_val ()) # define __builtin_inff128x() ((_Float128x) __builtin_inf ()) # define __builtin_nanf128x(x) ((_Float128x) __builtin_nan (x)) diff -up glibc-2.33/sysdeps/ieee754/ldbl-128/bits/floatn.h.92~ glibc-2.33/sysdeps/ieee754/ldbl-128/bits/floatn.h --- glibc-2.33/sysdeps/ieee754/ldbl-128/bits/floatn.h.92~ 2021-02-01 18:15:33.000000000 +0100 +++ glibc-2.33/sysdeps/ieee754/ldbl-128/bits/floatn.h 2021-07-10 03:24:05.274345249 +0200 @@ -55,7 +55,7 @@ /* Defined to concatenate the literal suffix to be used with _Float128 types, if __HAVE_FLOAT128 is 1. */ # if __HAVE_FLOAT128 -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined __clang__ /* The literal suffix f128 exists only since GCC 7.0. */ # define __f128(x) x##l # else @@ -65,7 +65,7 @@ /* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */ # if __HAVE_FLOAT128 -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined __clang__ # define __CFLOAT128 _Complex long double # else # define __CFLOAT128 _Complex _Float128 @@ -76,7 +76,7 @@ # if __HAVE_FLOAT128 /* The type _Float128 exists only since GCC 7.0. */ -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined __clang__ typedef long double _Float128; # endif diff -up glibc-2.33/sysdeps/x86/bits/floatn.h.92~ glibc-2.33/sysdeps/x86/bits/floatn.h --- glibc-2.33/sysdeps/x86/bits/floatn.h.92~ 2021-02-01 18:15:33.000000000 +0100 +++ glibc-2.33/sysdeps/x86/bits/floatn.h 2021-07-10 03:24:05.274345249 +0200 @@ -58,7 +58,7 @@ /* Defined to concatenate the literal suffix to be used with _Float128 types, if __HAVE_FLOAT128 is 1. */ # if __HAVE_FLOAT128 -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) /* The literal suffix f128 exists only since GCC 7.0. */ # define __f128(x) x##q # else @@ -68,7 +68,7 @@ /* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */ # if __HAVE_FLOAT128 -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) /* Add a typedef for older GCC compilers which don't natively support _Complex _Float128. */ typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__))); @@ -82,7 +82,7 @@ typedef _Complex float __cfloat128 __att # if __HAVE_FLOAT128 /* The type _Float128 exists only since GCC 7.0. */ -# if !__GNUC_PREREQ (7, 0) || defined __cplusplus +# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined(__clang__) typedef __float128 _Float128; # endif @@ -108,7 +108,7 @@ typedef __float128 _Float128; e.g.: __builtin_signbitf128, before GCC 6. However, there has never been a __builtin_signbitf128 in GCC and the type-generic builtin is only available since GCC 6. */ -# if !__GNUC_PREREQ (6, 0) +# if !__GNUC_PREREQ (6, 0) || defined(__clang__) # define __builtin_signbitf128 __signbitf128 # endif