------- Comment #14 from rob1weld at aol dot com 2009-01-29 12:32 ------- (In reply to comment #5) > ! Test XFAILed on these platforms because the system's printf() lacks > ! proper support for denormalized long doubles. See PR24685 > Looks like this testcase should be xfailed on solaris also.
(In reply to comment #9) > Subject: Re: [trunk regression]?gcc trunk 143562 - Testsuite - gfortran > failing tests that worked previously > I think adding a printf() clone to libiberty is WAY overkill just to > silence one failing test. I took a look around for some existing tests that could help us. The files: gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-* gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-scanf-* are setup only for mingw. I added OpenSolaris and got this result: Mod: /* { dg-do compile { target { *-*-mingw* } } } */ /* { dg-do compile { target { *-*-mingw* *-*-solaris2.11* } } } */ Result: FAIL: gcc.dg/format/ms_c90-printf-1.c (test for excess errors) Excess errors: /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-1.c:56: warning: use of 'h' length modifier with 'c' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-1.c:57: warning: use of 'h' length modifier with 's' type character FAIL: gcc.dg/format/ms_c90-printf-2.c %hh is unsupported (test for warnings, line 17) FAIL: gcc.dg/format/ms_c90-printf-2.c %j is unsupported (test for warnings, line 19) FAIL: gcc.dg/format/ms_c90-printf-2.c %z is unsupported (test for warnings, line 20) FAIL: gcc.dg/format/ms_c90-printf-2.c %t is unsupported (test for warnings, line 21) FAIL: gcc.dg/format/ms_c90-printf-2.c (test for excess errors) Excess errors: /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:17: warning: ISO C90 does not support the 'hh' gnu_printf length modifier /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:18: warning: format '%I64d' expects type 'int', but argument 2 has type 'llong' /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:19: warning: ISO C90 does not support the 'j' gnu_printf length modifier /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:20: warning: ISO C90 does not support the 'z' gnu_printf length modifier /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:21: warning: ISO C90 does not support the 't' gnu_printf length modifier FAIL: gcc.dg/format/ms_c90-printf-2.c -DWIDE %hh is unsupported (test for warnings, line 17) FAIL: gcc.dg/format/ms_c90-printf-2.c -DWIDE %j is unsupported (test for warnings, line 19) FAIL: gcc.dg/format/ms_c90-printf-2.c -DWIDE %z is unsupported (test for warnings, line 20) FAIL: gcc.dg/format/ms_c90-printf-2.c -DWIDE %t is unsupported (test for warnings, line 21) FAIL: gcc.dg/format/ms_c90-printf-2.c -DWIDE (test for excess errors) Excess errors: /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:17: warning: ISO C90 does not support the 'hh' gnu_printf length modifier /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:18: warning: format '%I64d' expects type 'int', but argument 2 has type 'llong' /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:19: warning: ISO C90 does not support the 'j' gnu_printf length modifier /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:20: warning: ISO C90 does not support the 'z' gnu_printf length modifier /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-printf-2.c:21: warning: ISO C90 does not support the 't' gnu_printf length modifier FAIL: gcc.dg/format/ms_c90-scanf-1.c %L is unsupported (test for warnings, line 75) FAIL: gcc.dg/format/ms_c90-scanf-1.c %L is unsupported (test for warnings, line 76) FAIL: gcc.dg/format/ms_c90-scanf-1.c %L is unsupported (test for warnings, line 77) FAIL: gcc.dg/format/ms_c90-scanf-1.c %L is unsupported (test for warnings, line 78) FAIL: gcc.dg/format/ms_c90-scanf-1.c %L is unsupported (test for warnings, line 79) FAIL: gcc.dg/format/ms_c90-scanf-1.c (test for excess errors) Excess errors: /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-scanf-1.c:56: warning: use of 'h' length modifier with 's' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-scanf-1.c:58: warning: use of 'h' length modifier with 'c' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-scanf-1.c:75: warning: use of 'L' length modifier with 's' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-scanf-1.c:76: warning: use of 'L' length modifier with '[' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-scanf-1.c:77: warning: use of 'L' length modifier with 'c' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-scanf-1.c:78: warning: use of 'L' length modifier with 'p' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-scanf-1.c:79: warning: use of 'L' length modifier with 'n' type character FAIL: gcc.dg/format/ms_c90-strftime-2.c (test for excess errors) Excess errors: /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-strftime-2.c:15: warning: '%D' yields only last 2 digits of year /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c90-strftime-2.c:18: warning: '%g' yields only last 2 digits of year FAIL: gcc.dg/format/ms_c99-printf-1.c bad use of %hF (test for warnings, line 27) FAIL: gcc.dg/format/ms_c99-printf-1.c bad use of %ha (test for warnings, line 32) FAIL: gcc.dg/format/ms_c99-printf-1.c bad use of %hA (test for warnings, line 33) FAIL: gcc.dg/format/ms_c99-printf-1.c (test for excess errors) Excess errors: /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c99-printf-1.c:27: warning: use of 'h' length modifier with 'F' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c99-printf-1.c:32: warning: use of 'h' length modifier with 'a' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c99-printf-1.c:33: warning: use of 'h' length modifier with 'A' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c99-printf-1.c:34: warning: use of 'h' length modifier with 'c' type character /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c99-printf-1.c:35: warning: use of 'h' length modifier with 's' type character FAIL: gcc.dg/format/ms_c99-printf-2.c %q length is unsupported (test for warnings, line 18) FAIL: gcc.dg/format/ms_c99-printf-2.c %Z length is unsupported (test for warnings, line 20) FAIL: gcc.dg/format/ms_c99-printf-2.c printf %m is unsupported (test for warnings, line 24) FAIL: gcc.dg/format/ms_c99-printf-2.c printf I format (test for warnings, line 32) FAIL: gcc.dg/format/ms_c99-printf-2.c (test for excess errors) Excess errors: /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c99-printf-2.c:18: warning: ISO C does not support the 'q' gnu_printf length modifier /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c99-printf-2.c:20: warning: ISO C does not support the 'Z' gnu_printf length modifier /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c99-printf-2.c:24: warning: ISO C does not support the '%m' gnu_printf format /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/format/ms_c99-printf-2.c:32: warning: 'I' flag used with '%x' gnu_printf format There are a small sample of some of the FAIL:s that I get. There are many PASS:es also. It is true that some of the FAIL results are due to MinGW extensions but some of them seem to indicate that we would get different results on different OSes - not what we want. Support for Andrew's position that "... >> lacks proper support >> for denormalized long doubles. See PR24685 > Looks like this testcase should be xfailed on solaris also." is provided by these gcc.log entries: ... Running /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/compat/compat.exp ... Executing on host: /usr/share/src/gcc_build/gcc/xgcc -B/usr/share/src/gcc_build/gcc/ dfprt17039.c -lm -o dfprt17039.exe (timeout = 300) /var/tmp//cc7eaOLo.o: In function `main': dfprt17039.c:(.text+0x25): undefined reference to `__dpd_extendsdtd2' dfprt17039.c:(.text+0x4f): undefined reference to `__dpd_extendddtd2' dfprt17039.c:(.text+0x8a): undefined reference to `__dpd_addtd3' collect2: ld returned 1 exit status compiler exited with status 1 output is: /var/tmp//cc7eaOLo.o: In function `main': dfprt17039.c:(.text+0x25): undefined reference to `__dpd_extendsdtd2' dfprt17039.c:(.text+0x4f): undefined reference to `__dpd_extendddtd2' dfprt17039.c:(.text+0x8a): undefined reference to `__dpd_addtd3' collect2: ld returned 1 exit status Executing on host: /usr/share/src/gcc_build/gcc/xgcc -B/usr/share/src/gcc_build/gcc/ -DSKIP_DECIMAL_FLOAT -c -o c_compat_main_tst.o /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_main.c (timeout = 300) PASS: gcc.dg/compat/fnptr-by-value-1 c_compat_main_tst.o compile ... PASS: gcc.dg/dfp/func-vararg-dfp.c (test for excess errors) Executing on host: /usr/share/src/gcc_build/gcc/xgcc -B/usr/share/src/gcc_build/gcc/ /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/dfp/func-vararg-mixed-2.c -std=gnu99 -mpreferred-stack-boundary=2 -lm -o ./func-vararg-mixed-2.exe (timeout = 300) /var/tmp//cclEaaXH.o: In function `vararg_d64': func-vararg-mixed-2.c:(.text+0xaa): undefined reference to `__dpd_truncddsd2' /var/tmp//cclEaaXH.o: In function `main': func-vararg-mixed-2.c:(.text+0x1c1): undefined reference to `__dpd_nesd2' func-vararg-mixed-2.c:(.text+0x215): undefined reference to `__dpd_extendsddd2' func-vararg-mixed-2.c:(.text+0x231): undefined reference to `__dpd_nedd2' func-vararg-mixed-2.c:(.text+0x2b8): undefined reference to `__dpd_netd2' collect2: ld returned 1 exit status compiler exited with status 1 output is: /var/tmp//cclEaaXH.o: In function `vararg_d64': func-vararg-mixed-2.c:(.text+0xaa): undefined reference to `__dpd_truncddsd2' /var/tmp//cclEaaXH.o: In function `main': func-vararg-mixed-2.c:(.text+0x1c1): undefined reference to `__dpd_nesd2' func-vararg-mixed-2.c:(.text+0x215): undefined reference to `__dpd_extendsddd2' func-vararg-mixed-2.c:(.text+0x231): undefined reference to `__dpd_nedd2' func-vararg-mixed-2.c:(.text+0x2b8): undefined reference to `__dpd_netd2' collect2: ld returned 1 exit status FAIL: gcc.dg/dfp/func-vararg-mixed-2.c (test for excess errors) Excess errors: func-vararg-mixed-2.c:(.text+0xaa): undefined reference to `__dpd_truncddsd2' func-vararg-mixed-2.c:(.text+0x1c1): undefined reference to `__dpd_nesd2' func-vararg-mixed-2.c:(.text+0x215): undefined reference to `__dpd_extendsddd2' func-vararg-mixed-2.c:(.text+0x231): undefined reference to `__dpd_nedd2' func-vararg-mixed-2.c:(.text+0x2b8): undefined reference to `__dpd_netd2' ...(more)... I think we would benefit from fixing the "dg-do compile" lines in those tests to include both "*-*-solaris2.11*" and "*-*-linux*" . If we find we get inconsistent results from different OSes then it may well be worth using some libiberty with gcc and ensuring that if we ./configure using "--enable-decimal-float --with-long-double-128 --enable-largefile" that it either works correctly _or_ is correctly excluded from testing. Thanks Rob -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38946