more evidence that failing to detect ICE's is a significant problem

Joe Buck jbuck@synopsys.com
Sat Aug 8 00:13:00 GMT 1998


The failure to detect ICE's hides a g++ regression (1.0.3a -> 1.1)
on i586-pc-linux-gnulibc1.  Details:


I just ran tests for 19980803 on my Red Hat 4.2 box
(i586-pc-linux-gnulibc1, with binutils 2.9.1 and --enable-shared).
The g++ tests appeared to come out perfect:

                === g++ Summary ===

# of expected passes            4132
# of expected failures          85
# of untested testcases         7
/home/jbuck/egcs-work/egcs-linux/gcc/testsuite/../xgcc version
egcs-2.91.53 19980803 (gcc2 ss-980609 experimental)

However, inspection of g++.log reveals that there was one internal
compiler error, for g++.pt/explicit69.C .

>From g++.log:

output is:
/home/jbuck/egcs-work/egcs/gcc/testsuite/g++.old-deja/g++.pt/explicit69.C:2:
Internal compiler error.
/home/jbuck/egcs-work/egcs/gcc/testsuite/g++.old-deja/g++.pt/explicit69.C:2:
Please submit a full bug report to `egcs-bugs@cygnus.com'.

XFAIL: g++.pt/explicit69.C not a template instantiation (test for errors,
line 2
)
PASS: g++.pt/explicit69.C (test for excess errors)

Note that "test for excess errors" style tests give a PASS when the
compiler barfs.  This is a really simple test case: the line

template class x {};

kills the compiler.  THe compiler dies at line 1122 of cp/pt.c:

1119             /* This should not be an instantiation; explicit
1120                 instantiation directives can only occur at the top
1121                 level.  */
1122              my_friendly_assert (!explicit_instantiation, 0);

This is a regression from egcs-1.0.3, which does not have this bug.
However, a strict comparison of .sum files would have missed the
regression.







More information about the Gcc mailing list