Problem with spuriously failing gcc tests with dg-output.

Georg-Johann Lay <[email protected]>
Newsgroups gmane.comp.sysutils.dejagnu.general
Message-ID <[email protected]>
Hi, when I am running gcc test suite

$ make check-gcc RUNTESTFLAGS='-all ubsan.exp=float-cast-overflow-2.c'

                 === gcc tests ===

Schedule of variations:
     unix

Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file 
for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for 
target.
Using /home/georg/gnu/gcc.gnu.org/trunk/gcc/testsuite/config/default.exp 
as tool-and-target-specific interface file.
Running 
/home/georg/gnu/gcc.gnu.org/trunk/gcc/testsuite/gcc.dg/ubsan/ubsan.exp ...
PASS: c-c++-common/ubsan/float-cast-overflow-2.c   -O0  (test for excess 
errors)
PASS: c-c++-common/ubsan/float-cast-overflow-2.c   -O0  execution test
FAIL: c-c++-common/ubsan/float-cast-overflow-2.c   -O0  output pattern test
PASS: c-c++-common/ubsan/float-cast-overflow-2.c   -O1  (test for
...

I am getting spurious FAILs.  Rerunning the same tests might come up 
with more or less FAILs / PASSes.

The tests have "lots" of dg-output directives

$ cat gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c | tail -n 3
/* { dg-output "\[^\n\r]*runtime error: value -?nan is outside the range 
of representable values of type '__int128 
unsigned'\[^\n\r]*(\n|\r\n|\r)" } */
/* { dg-output "\[^\n\r]*runtime error: value inf is outside the range 
of representable values of type '__int128 
unsigned'\[^\n\r]*(\n|\r\n|\r)" } */
/* { dg-output "\[^\n\r]*runtime error: value -inf is outside the range 
of representable values of type '__int128 unsigned'" } */

https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/testsuite/c-c%2B%2B-common/ubsan/float-cast-overflow-2.c?revision=212755&view=markup#l1

In the according log file, some of the "PASS..." output is messed up 
with the output from dg-output, making the test fail:

$ cat testsuite/gcc/gcc.log
PASS: c-c++-common/ubsan/float-cast-overflow-2.c   -O0  (test for excess 
errors)
Setting LD_LIBRARY_PATH to : [cut]
spawn [open ...]

/home/georg/gnu/gcc.gnu.org/trunk/gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c:20:3: 
runtime error: value 1.70141e+38 is outside the range of representable 
values of type '__int128'
/home/georg/gnu/gcc.gnu.org/trunk/gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c:20:3: 
runtime error: value 1.70141e+38 is outside the range of representable 
values of type '__int128'
[...]
/home/georg/gnu/gcc.gnu.org/trunk/gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c:25:3: 
runtime error: value 3.40282e+38 is outside the range of representable 
values of type '__int128 unsigned'
/home/georg/gnu/gcc.gnu.org/trunk/gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c:25:3: 
runtime error: value 3.40282e+38 is outside the range of representable 
values of type '__int128 unsigned'
/home/georg/gnu/gcc.gnu.org/trunk/gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c:25:3: 
runtime error: PASS: c-c++-common/ubsan/float-cast-overflow-2.c   -O0 
execution test

BUMMER! The PASS output comes at the wrong place and messes up the dg-output

FAIL: c-c++-common/ubsan/float-cast-overflow-2.c   -O0  output pattern test
Output was:
c-c++-common/ubsan/float-cast-overflow-2.c:20:3: runtime error: value 
1.70141e+38 is outside the range of representable values of type '__int128'
c-c++-common/ubsan/float-cast-overflow-2.c:20:3: runtime error: value 
1.70141e+38 is outside the range of representable values of type '__int128'
[...]
c-c++-common/ubsan/float-cast-overflow-2.c:25:3: runtime error: value 
3.40282e+38 is outside the range of representable values of type 
'__int128 unsigned'
c-c++-common/ubsan/float-cast-overflow-2.c:25:3: runtime error: value 
3.40282e+38 is outside the range of representable values of type 
'__int128 unsigned'
c-c++-common/ubsan/float-cast-overflow-2.c:25:3: runtime error:
Should match:

Output is missing after "runtime error: " which is the place where the 
"PASS" message was emit.

Any ideas what can cause such fails?  It's on a 8-core x86_64 machine, 
but the testsuite is not started in parallel mode.

$ runtest -version
Expect version is       5.45
Tcl version is          8.6
Framework version is    1.5.3

Does this ring a bell somewhere?  What could shred the output?

Thanks in advance,

Johann
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.