[PATCH v2 1/5] x86: Do not use __builtin_fpclassify for _Float64x/long double
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Mon Dec 29 14:26:06 GMT 2025
On 25/12/25 19:24, Andreas Schwab wrote:
> make[3]: Entering directory '/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/gcc'
> /home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/./prev-gcc/xg++ -B/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/./prev-gcc/ -B/usr/x86_64-suse-linux/bin/ -nostdinc++ -B/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/src/.libs -B/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/libsupc++/.libs -I/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/include/x86_64-suse-linux -I/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/include -I/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/libstdc++-v3/libsupc++ -L/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/src/.libs -L/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/libsupc++/.libs -MT m2/gm2-libs-boot/wrapc.o -MMD -MP -MF m2/gm2-libs-boot/.deps/wrapc.TPo -c -DHAVE_CONFIG_H -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -fno-checking -fprofile-generate -fPIC -DMC_M2 -Im2/gm2-libs -I../../gcc/m2 -Im2 -I. -Im2/gm2-libs-boot -Im2/gm2-libs -I. -Im2/gm2-libs-boot -I../../gcc -I../../gcc/m2/gm2-libs-boot -I../../gcc/../include -I../../gcc/../libcpp/include -I../../gcc/../libcody -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc/../libbacktrace ../../gcc/m2/gm2-libs-ch/wrapc.c -o m2/gm2-libs-boot/wrapc.o
> In file included from /home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/include/cmath:55,
> from /home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/include/math.h:36,
> from ../../gcc/m2/gm2-libs-ch/wrapc.c:30:
> ../../gcc/m2/gm2-libs-ch/wrapc.c: In function ‘int wrapc_isfinite(double)’:
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: expected primary-expression before ‘__typeof’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: expected primary-expression before ‘float’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: ‘__builtin_types_compatible_p’ was not declared in this scope
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: ‘__builtin__builtin_fpclassify’ was not declared in this scope; did you mean ‘__builtin_fpclassify’?
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: expected primary-expression before ‘__typeof’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: expected primary-expression before ‘double’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: expected primary-expression before ‘__typeof’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: expected primary-expression before ‘long’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: ‘__builtin_choose_expr’ was not declared in this scope; did you mean ‘__builtin_cospi’?
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: ‘__builtin_choose_expr’ was not declared in this scope; did you mean ‘__builtin_cospi’?
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:11: error: ‘__builtin_choose_expr’ was not declared in this scope; did you mean ‘__builtin_cospi’?
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:39: error: expected primary-expression before ‘__typeof’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:39: error: expected primary-expression before ‘float’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:39: error: expected primary-expression before ‘__typeof’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:39: error: expected primary-expression before ‘double’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:39: error: expected primary-expression before ‘__typeof’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:207:39: error: expected primary-expression before ‘long’
> 207 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c: In function ‘int wrapc_isfinitel(long double)’:
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: expected primary-expression before ‘__typeof’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: expected primary-expression before ‘float’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: ‘__builtin_types_compatible_p’ was not declared in this scope
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: ‘__builtin__builtin_fpclassify’ was not declared in this scope; did you mean ‘__builtin_fpclassify’?
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: expected primary-expression before ‘__typeof’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: expected primary-expression before ‘double’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: expected primary-expression before ‘__typeof’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: expected primary-expression before ‘long’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: ‘__builtin_choose_expr’ was not declared in this scope; did you mean ‘__builtin_cospi’?
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: ‘__builtin_choose_expr’ was not declared in this scope; did you mean ‘__builtin_cospi’?
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:11: error: ‘__builtin_choose_expr’ was not declared in this scope; did you mean ‘__builtin_cospi’?
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:39: error: expected primary-expression before ‘__typeof’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:39: error: expected primary-expression before ‘float’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:39: error: expected primary-expression before ‘__typeof’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:39: error: expected primary-expression before ‘double’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:39: error: expected primary-expression before ‘__typeof’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:216:39: error: expected primary-expression before ‘long’
> 216 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c: In function ‘int wrapc_isfinitef(float)’:
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: expected primary-expression before ‘__typeof’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: expected primary-expression before ‘float’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: ‘__builtin_types_compatible_p’ was not declared in this scope
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: ‘__builtin__builtin_fpclassify’ was not declared in this scope; did you mean ‘__builtin_fpclassify’?
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: expected primary-expression before ‘__typeof’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: expected primary-expression before ‘double’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: expected primary-expression before ‘__typeof’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: expected primary-expression before ‘long’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: ‘__builtin_choose_expr’ was not declared in this scope; did you mean ‘__builtin_cospi’?
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: ‘__builtin_choose_expr’ was not declared in this scope; did you mean ‘__builtin_cospi’?
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:11: error: ‘__builtin_choose_expr’ was not declared in this scope; did you mean ‘__builtin_cospi’?
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:39: error: expected primary-expression before ‘__typeof’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:39: error: expected primary-expression before ‘float’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:39: error: expected primary-expression before ‘__typeof’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:39: error: expected primary-expression before ‘double’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:39: error: expected primary-expression before ‘__typeof’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> ../../gcc/m2/gm2-libs-ch/wrapc.c:225:39: error: expected primary-expression before ‘long’
> 225 | return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE);
> | ^~~~~~~~~~
> make[3]: *** [../../gcc/m2/Make-lang.in:1537: m2/gm2-libs-boot/wrapc.o] Error 1
> make[3]: Leaving directory '/home/abuild/rpmbuild/BUILD/gcc16-16.0.0+git6389-build/gcc-16.0.0+git6389/obj-x86_64-suse-linux/gcc'
>
Thanks for bring this up, we can't use this new macro for C++. I am working
on a patch.
More information about the Libc-alpha
mailing list