> > Fix compilation errors with clang that masquerades as gcc 13. > > And here is a patch that fixes the clang warnings that appear to be caused > by this version of __GNUC__.
And here is a patch that avoids a test failure. gcc >= 8 generates correct floating point comparisons, gcc 4.2 and clang 17 don't. Another reason to dislike it when clang lies. 2024-08-26 Bruno Haible <br...@clisp.org> Fix a test failure from a clang that masquerades as gcc 13. * tests/test-fenv-except-trapping-2.c (main): Skip the '4' test on clang, since clang 17 still generates buggy comparisons, like gcc versions < 8. diff --git a/tests/test-fenv-except-trapping-2.c b/tests/test-fenv-except-trapping-2.c index 166454080e..e3c7299a67 100644 --- a/tests/test-fenv-except-trapping-2.c +++ b/tests/test-fenv-except-trapping-2.c @@ -450,11 +450,11 @@ main (int argc, char *argv[]) only when a source operand is an SNaN. The COMISD instruction signals an invalid numeric exception only if a source operand is either an SNaN or a QNaN." - - gcc < 8 (except when option -mno-ieee-fp is used) generates 'ucom*' - or 'fucom*' instructions and thus fails the test. + - gcc < 8 (except when option -mno-ieee-fp is used) and clang generate + 'ucom*' or 'fucom*' instructions and thus fail the test. - gcc >= 8 generates 'com*' or 'fcom*' instructions and thus passes the test. */ - #if (__GLIBC__ >= 2 && ((defined __x86_64__ || defined _M_X64) || (defined __i386 || defined _M_IX86)) && __GNUC__ < 8) \ + #if (__GLIBC__ >= 2 && ((defined __x86_64__ || defined _M_X64) || (defined __i386 || defined _M_IX86)) && (__GNUC__ < 8 || defined __clang__)) \ || (__GLIBC__ >= 2 && (defined __powerpc__ || (defined __s390__ || defined __s390x__))) \ || (__GLIBC__ >= 2 && __FreeBSD_kernel__ && ((defined __x86_64__ || defined _M_X64) || (defined __i386 || defined _M_IX86))) \ || (defined MUSL_LIBC && ((defined __i386 || defined _M_IX86) || defined __powerpc__)) \