Bug 23118 - [3.4/4.0/4.1 Regression] Another segmentation fault after improper overloading (BootView)
Summary: [3.4/4.0/4.1 Regression] Another segmentation fault after improper overloadin...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.0.1
: P2 minor
Target Milestone: 4.0.3
Assignee: Nathan Sidwell
URL: http://gcc.gnu.org/ml/gcc-patches/200...
Keywords: error-recovery, ice-on-invalid-code, monitored, patch
Depends on:
Blocks:
 
Reported: 2005-07-28 19:56 UTC by Flash Sheridan
Modified: 2005-10-18 12:39 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work: 3.3.3
Known to fail: 3.4.0 4.0.0 4.1.0
Last reconfirmed: 2005-10-13 20:14:00


Attachments
105158_BootView_min.ii (124 bytes, text/plain)
2005-07-28 19:58 UTC, Flash Sheridan
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Flash Sheridan 2005-07-28 19:56:52 UTC
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.
Comment 1 Flash Sheridan 2005-07-28 19:58:57 UTC
Created attachment 9381 [details]
105158_BootView_min.ii
Comment 2 Andrew Pinski 2005-07-28 20:02:40 UTC
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).
Comment 3 Volker Reichelt 2005-08-01 08:39:35 UTC
Less invalid ;-) testcase:

==========================
struct A
{
    void foo();
    virtual void foo();
};
==========================

This crashes since gcc 3.0.
Comment 4 Volker Reichelt 2005-08-05 19:38:41 UTC
Testing a patch.
Comment 5 Andrew Pinski 2005-08-08 18:16:02 UTC
: Search converges between 2001-06-03-trunk (#22) and 2001-06-10-trunk (#23).

Comment 6 Nathan Sidwell 2005-10-17 17:36:42 UTC
I'll take a look
Comment 7 GCC Commits 2005-10-18 12:30:38 UTC
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

Comment 8 GCC Commits 2005-10-18 12:34:35 UTC
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

Comment 9 Nathan Sidwell 2005-10-18 12:39:34 UTC
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