Thank you. The excess failures should be gone with r248464.
Some comments below. On 05/25/2017 09:34 AM, Andreas Schwab wrote:
FAIL: gcc.dg/overflow-warn-9.c (test for warnings, line 59) FAIL: gcc.dg/overflow-warn-9.c (test for warnings, line 60) FAIL: gcc.dg/overflow-warn-9.c (test for warnings, line 62) FAIL: gcc.dg/overflow-warn-9.c (test for excess errors) Excess errors: /daten/aranym/gcc/gcc-20170525/gcc/testsuite/gcc.dg/overflow-warn-9.c:62:9: warning: signed conversion from 'long unsigned int' to 'long int' changes value from '2147483648' to '-2147483648' [-Wsign-conversion]
These were ILP32 issues.
FAIL: gcc.dg/pr59963-2.c (test for warnings, line 16) FAIL: gcc.dg/pr59963-2.c (test for excess errors) Excess errors: /daten/aranym/gcc/gcc-20170525/gcc/testsuite/gcc.dg/pr59963-2.c:16:6: warning: overflow in conversion from 'long unsigned int' to 'short int' changes value from '4294967295' to '-1' [-Woverflow] FAIL: gcc.dg/pr60114.c (test for warnings, line 12) FAIL: gcc.dg/pr60114.c (test for warnings, line 13) FAIL: gcc.dg/pr60114.c (test for warnings, line 14) FAIL: gcc.dg/pr60114.c (test for warnings, line 23) FAIL: gcc.dg/pr60114.c (test for warnings, line 24) FAIL: gcc.dg/pr60114.c (test for excess errors) Excess errors: /daten/aranym/gcc/gcc-20170525/gcc/testsuite/gcc.dg/pr60114.c:12:9: warning: signed conversion from 'unsigned int' to 'int' changes value from '2147483648' to '-2147483648' [-Wsign-conversion] /daten/aranym/gcc/gcc-20170525/gcc/testsuite/gcc.dg/pr60114.c:13:11: warning: signed conversion from 'unsigned int' to 'int' changes value from '2147483648' to '-2147483648' [-Wsign-conversion] /daten/aranym/gcc/gcc-20170525/gcc/testsuite/gcc.dg/pr60114.c:14:16: warning: signed conversion from 'unsigned int' to 'int' changes value from '2147483648' to '-2147483648' [-Wsign-conversion] /daten/aranym/gcc/gcc-20170525/gcc/testsuite/gcc.dg/pr60114.c:23:17: warning: overflow in conversion from 'int' to 'signed char' changes value from '256' to '0' [-Woverflow] /daten/aranym/gcc/gcc-20170525/gcc/testsuite/gcc.dg/pr60114.c:24:20: warning: overflow in conversion from 'int' to 'signed char' changes value from '256' to '0' [-Woverflow]
Besides verifying the right warning on each line, these tests also verify the column number of each expected warning, e.g., like so (pr59963-2.c): return f (0xffffffffL, /* { dg-warning "13:-Woverflow" } */ 0xffffffffL) /* { dg-warning "13:-Woverflow" } */ && f (0xffffffffL, /* { dg-warning "9:-Woverflow" } */ 0xffffffffL); /* { dg-warning "9:-Woverflow" } */ The 13 is the 1-based column number corresponding to the number of characters from the beginning of the line to the position of the caret in the source file. To make things interesting, the column number hardcoded into the tests is not the same as what one sees in editors like emacs that use zerop-based column numbers, or even others like vi that translate tabs into the appropriate number of spaces. Some lines in some tests have all spaces, others may have tabs. That's why above, the third line has a lower column number than the two above it, even though the caret on the third line is expected to be offset farther to the right. The script I use to apply patches after they have been approved and retested one last time just before the final commit adjusts whitespace to conform to the GNU coding standard (among other things). In particular, it replaces blocks of 8 spaces with tabs as the outdated rule still requires. That breaks these assertions. I'll change my script to avoid changing tests but I think the long term solution is to eliminate the outdated requirement to replace spaces with tabs. It serves no useful purpose and only makes things harder for us. Another option is to tweak either DejaGnu or the GCC part of it to treat a tab the same as a block of 8 spaces. Martin