The source below gives a segfault on GCC 4.0.1. Spun off from Bugzilla Bug 22604, per Andrew Pinski, since he said it was a separate issue with the same symptom. PalmSource bug 105158. Source: class nameOne : public nameTwo, public nameThree, public nameFour, public nameFive, public nameSix { void nameSeven(const nameEight &name, const nameNine & icon); virtual void nameSeven(const nameEight& name, const nameTen &icon); Session: /opt/gcc401chk/bin/g++ -v ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../configure --enable-checking --prefix=/opt/gcc401chk --enable-languages=c,c+ + Thread model: posix gcc version 4.0.1 /opt/gcc401chk/libexec/gcc/i686-pc-linux-gnu/4.0.1/cc1plus -fpreprocessed ../cpp/bugfiles/ GCC_bugfiles/error/105158_BootView_min.ii -quiet -dumpbase 105158_BootView_min.ii - mtune=pentiumpro -auxbase 105158_BootView_min -version -o /tmp/cc1SYkYS.s GNU C++ version 4.0.1 (i686-pc-linux-gnu) compiled by GNU C version 3.3.4 (pre 3.3.5 20040809). GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:1: error: expected class-name before ‘,’ token ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:1: error: expected class-name before ‘,’ token ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:1: error: expected class-name before ‘,’ token ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:1: error: expected class-name before ‘,’ token ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:2: error: expected class-name before ‘{’ token ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:3: error: expected ‘,’ or ‘...’ before ‘&’ token ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:3: error: ISO C++ forbids declaration of ‘nameEight’ with no type ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:4: error: expected ‘,’ or ‘...’ before ‘&’ token ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:4: error: ISO C++ forbids declaration of ‘nameEight’ with no type ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:4: error: ‘virtual void nameOne::nameSeven(int)’ and ‘void nameOne::nameSeven(int)’ cannot be overloaded ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:4: error: expected `}' at end of input ../cpp/bugfiles/GCC_bugfiles/error/105158_BootView_min.ii:2: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Created attachment 9381 [details] 105158_BootView_min.ii
Confirmed, the main reason why I said it was a different bug is because the backtraces are different. The second reason why I know it is a different bug is that this bug we crash in 3.4.0 also (though with "t.cc:2: confused by earlier errors, bailing out" but that is just an ICE after a couple of errors).
Less invalid ;-) testcase: ========================== struct A { void foo(); virtual void foo(); }; ========================== This crashes since gcc 3.0.
Testing a patch.
: Search converges between 2001-06-03-trunk (#22) and 2001-06-10-trunk (#23).
I'll take a look
Subject: Bug 23118 CVSROOT: /cvs/gcc Module name: gcc Changes by: nathan@gcc.gnu.org 2005-10-18 12:30:33 Modified files: gcc/cp : ChangeLog cp-tree.h class.c semantics.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/g++.dg/overload: error2.C gcc/testsuite/g++.dg/inherit: covariant14.C Log message: cp: PR c++/22604 * class.c (update_vtable_entry_for_fn): Don't process invalid covariant overriders. PR c++/23118 * cp-tree.h (add_method): Add return value. * class.c (add_method): Return success indicator. * semantics.c (finish_member_declaration): Don't add an invalid method to the method list. testsuite: PR c++/23118 * g++.dg/overload/error2.C: New. PR c++/22604 * g++.dg/inherit/covariant14.C: New. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4944&r2=1.4945 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cp-tree.h.diff?cvsroot=gcc&r1=1.1168&r2=1.1169 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/class.c.diff?cvsroot=gcc&r1=1.737&r2=1.738 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/semantics.c.diff?cvsroot=gcc&r1=1.493&r2=1.494 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.6207&r2=1.6208 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/overload/error2.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/inherit/covariant14.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
Subject: Bug 23118 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: nathan@gcc.gnu.org 2005-10-18 12:34:30 Modified files: gcc/cp : ChangeLog cp-tree.h class.c semantics.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/g++.dg/overload: error2.C gcc/testsuite/g++.dg/inherit: covariant14.C Log message: cp: PR c++/22604 * class.c (update_vtable_entry_for_fn): Don't process invalid covariant overriders. PR c++/23118 * cp-tree.h (add_method): Add return value. * class.c (add_method): Return success indicator. * semantics.c (finish_member_declaration): Don't add an invalid method to the method list. testsuite: PR c++/23118 * g++.dg/overload/error2.C: New. PR c++/22604 * g++.dg/inherit/covariant14.C: New. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.4648.2.142&r2=1.4648.2.143 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cp-tree.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.1106.2.17&r2=1.1106.2.18 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/class.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.707.2.8&r2=1.707.2.9 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/semantics.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.463.2.12&r2=1.463.2.13 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.466&r2=1.5084.2.467 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/overload/error2.C.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/inherit/covariant14.C.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1
fixed mainline & 4.0 2005-10-18 Nathan Sidwell <nathan@codesourcery.com> PR c++/22604 * class.c (update_vtable_entry_for_fn): Don't process invalid covariant overriders. PR c++/23118 * cp-tree.h (add_method): Add return value. * class.c (add_method): Return success indicator. * semantics.c (finish_member_declaration): Don't add an invalid method to the method list. wont fix 3.4