Bug 9173 - ICE in grokdeclarator, at cp/decl.c:11304
Summary: ICE in grokdeclarator, at cp/decl.c:11304
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 3.3
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-invalid-code
Depends on:
Blocks:
 
Reported: 2003-01-04 12:46 UTC by wwieser
Modified: 2003-07-25 17:33 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description wwieser 2003-01-04 12:46:01 UTC
Compiling the following (illegal) code snipped...

----------<crashme.cc>-----------
class A
{
	enum E
	{ ee=0 };
};

class B
{
	static void foo(int x,A::e);
};

void B::foo(int x,A::e)
{  }
------------------------

...and you get

----------<compiler outpot>----------
crashme.cc:9: error: no type `e' in `A'
crashme.cc:8: warning: all member functions in class `B' are private
crashme.cc:12: error: no type `e' in `A'
crashme.cc:13: internal compiler error: in grokdeclarator, at cp/decl.c:11304
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
---------------------------

This seems to be the minimal test case. 
I can't strip it down any more.

Release:
gcc (GCC) 3.3 20030104 (prerelease)

Environment:
Linux i686

How-To-Repeat:
See above.
Comment 1 wwieser 2003-01-04 12:46:01 UTC
Fix:
Don't know.
Comment 2 Volker Reichelt 2003-01-05 08:33:25 UTC
State-Changed-From-To: open->closed
State-Changed-Why: Fixed in gcc 3.4 with the new parser.
    
    The code crashes the compiler at least since gcc 2.95.x
    (the "confused by earlier errors, bailing out" messages
    in release versions are just hidden ICEs after a suitable
    error message).
    
    With the new parser we get:
    PR9173.cc:9: error: variable or field `foo' declared void
    PR9173.cc:9: error: expected function-definition
    PR9173.cc:12: error: variable or field `foo' declared void
    PR9173.cc:12: error: `int B::foo' is not a static member of `class B'
    PR9173.cc:12: error: expected primary-expression
    PR9173.cc:12: error: `e' is not a member of `class A'
    PR9173.cc:12: error: initializer list being treated as compound expression
    PR9173.cc:12: error: expected `,' or `;'
    
    I'll add this to the testsuite soon.
Comment 3 Volker Reichelt 2003-01-22 23:21:52 UTC
From: reichelt@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: c++/9173
Date: 22 Jan 2003 23:21:52 -0000

 CVSROOT:	/cvs/gcc
 Module name:	gcc
 Changes by:	reichelt@gcc.gnu.org	2003-01-22 23:21:51
 
 Modified files:
 	gcc/testsuite  : ChangeLog 
 Added files:
 	gcc/testsuite/g++.dg/parse: ret-type1.C tmpl-outside1.C 
 	                            int-as-enum1.C no-typename1.C 
 	                            no-value1.C wrong-inline1.C ref1.C 
 	                            attr-ctor1.C namespace5.C 
 	                            func-def1.C undefined1.C 
 	                            specialization1.C struct-as-enum1.C 
 	                            undefined2.C 
 
 Log message:
 	PR c++/2738
 	* g++.dg/parse/ret-type1.C: New test.
 	
 	PR c++/3792
 	* g++.dg/parse/tmpl-outside1.C: New test.
 	
 	PR c++/4207
 	* g++.dg/parse/int-as-enum1.C: New test.
 	
 	PR c++/4903
 	* g++.dg/parse/no-typename1.C: New test.
 	
 	PR c++/5533
 	* g++.dg/parse/no-value1.C: New test.
 	
 	PR c++/5921
 	* g++.dg/parse/wrong-inline1.C: New test.
 	
 	PR c++/6402
 	* g++.dg/parse/ref1.C: New test.
 	
 	PR c++/6992
 	* g++.dg/parse/attr-ctor1.C: New test.
 	
 	PR c++/7229
 	* g++.dg/parse/namespace5.C: New test.
 	
 	PR c++/7917
 	* g++.dg/parse/func-def1.C: New test.
 	
 	PR c++/8143
 	* g++.dg/parse/undefined1.C: New test.
 	
 	PR c++/5723, PR c++/8522
 	* g++.dg/parse/specialization1.C: New test.
 	
 	PR c++/163, PR c++/8595
 	* g++.dg/parse/struct-as-enum1.C: New test.
 	
 	PR c++/9173
 	* g++.dg/parse/undefined2.C: New test.
 
 Patches:
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.2361&r2=1.2362
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/ret-type1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/tmpl-outside1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/int-as-enum1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/no-typename1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/no-value1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/wrong-inline1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/ref1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/attr-ctor1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/namespace5.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/func-def1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/undefined1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/specialization1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/struct-as-enum1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/undefined2.C.diff?cvsroot=gcc&r1=NONE&r2=1.1