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

Reply via email to