Bug 17618

Summary: [4.0 Regression] ICE in cp_convert_to_pointer, at cp/cvt.c:83
Product: gcc Reporter: Michael Cieslinski <micis>
Component: c++Assignee: Andrew Pinski <pinskia>
Status: RESOLVED FIXED    
Severity: minor CC: gcc-bugs, reichelt
Priority: P2 Keywords: error-recovery, ice-checking, ice-on-invalid-code, monitored, patch
Version: 4.0.0   
Target Milestone: 4.0.0   
Host: Target:
Build: Known to work: 3.4.2
Known to fail: 4.0.0 Last reconfirmed: 2004-09-22 19:46:16
Attachments: mostly reduced preprocessed source

Description Michael Cieslinski 2004-09-22 19:06:38 UTC
/usr/local/gcc40/bin/g++40 -Wall -c -g -pipe -O0 -mcpu=G5 -fpermissive -
maltivec -mabi=altivec -o MeRecLut.o MeRecLut.ii  -v
Reading specs from /usr/local/gcc40/lib/gcc/powerpc-unknown-linux-
gnu/4.0.0/specs
Configured with: ../gcc40/configure --prefix=/usr/local/gcc40 --program-
suffix=40 --with-cpu=G5 --enable-altivec --enable-languages=c,c++ --enable-
checking
Thread model: posix
gcc version 4.0.0 20040919 (experimental)
 /usr/local/gcc40/libexec/gcc/powerpc-unknown-linux-gnu/4.0.0/cc1plus -
fpreprocessed MeRecLut.ii -quiet -dumpbase MeRecLut.ii -mcpu=G5 -maltivec -
mabi=altivec -auxbase-strip MeRecLut.o -g -O0 -Wall -version -fpermissive -o - |
 as -mpower4 -maltivec -maltivec -many -V -Qy -o MeRecLut.o -
GNU C++ version 4.0.0 20040919 (experimental) (powerpc-unknown-linux-gnu)
        compiled by GNU C version 4.0.0 20040919 (experimental).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU assembler version 2.15.90 (ppc-yellowdog-linux) using BFD version 2.15.90 
20040221
MeRecLut.ii: In member function `int MeRecLut::setData(int, char*, unsigned 
int, unsigned int, unsigned int**)':
MeRecLut.ii:45: error: `m_data' was not declared in this scope
MeRecLut.ii:52: internal compiler error: tree check: expected class 'type', 
have 'exceptional' (error_mark) in cp_convert_to_pointer, at cp/cvt.c:83
Comment 1 Michael Cieslinski 2004-09-22 19:07:38 UTC
Created attachment 7197 [details]
mostly reduced preprocessed source
Comment 2 Volker Reichelt 2004-09-22 19:46:16 UTC
Confirmed:

Here's a reduced testcase:
===============================
void foo()
{
    p;
    (void*) p;
}
===============================

The ICE only happens with the C++ frontend, and not with the C frontend.

Phils's regression tester says:
: Search converges between 2004-03-01-trunk (#446) and 2004-04-01-trunk (#447).
Comment 3 Andrew Pinski 2004-09-22 21:06:23 UTC
I have a fix.
Comment 4 Andrew Pinski 2004-09-23 00:03:14 UTC
Patch here: <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02324.html>.
Comment 5 Michael Cieslinski 2004-09-23 07:08:50 UTC
Dear Mr Pinski,
Thank you for the very fast reaction.
In the morning I applied the patch, but unfortunately I couldn't compile my 
application because is was broken by my colleagues doing incomplete checkins.
Today I'm in a meeting, but as soon as possible I will test it and post the 
result.
Michael Cieslinski
Comment 6 GCC Commits 2004-09-23 20:04:31 UTC
Subject: Bug 17618

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	pinskia@gcc.gnu.org	2004-09-23 20:04:22

Modified files:
	gcc/cp         : ChangeLog cvt.c 

Log message:
	004-09-23  Andrew Pinski  <pinskia@physics.uc.edu>
	
	PR c++/17618
	* cvt.c (cp_convert_to_pointer): Return early when the type is
	an error_mark_node.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4380&r2=1.4381
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cvt.c.diff?cvsroot=gcc&r1=1.165&r2=1.166

Comment 7 Andrew Pinski 2004-09-23 20:05:57 UTC
Fixed.
Comment 8 GCC Commits 2004-09-23 20:16:53 UTC
Subject: Bug 17618

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	pinskia@gcc.gnu.org	2004-09-23 20:16:48

Modified files:
	gcc/testsuite  : ChangeLog 
Added files:
	gcc/testsuite/g++.dg/lookup: crash5.C 

Log message:
	2004-09-23  Andrew Pinski  <pinskia@physics.uc.edu>
	
	PR c++/17618
	* g++.dg/lookup/crash5.C: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.4336&r2=1.4337
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/lookup/crash5.C.diff?cvsroot=gcc&r1=NONE&r2=1.1

Comment 9 GCC Commits 2005-10-11 00:39:31 UTC
Subject: Bug 17618

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	reichelt@gcc.gnu.org	2005-10-11 00:39:26

Modified files:
	gcc/cp         : ChangeLog cvt.c name-lookup.c typeck.c 
	gcc/testsuite  : ChangeLog 
Added files:
	gcc/testsuite/g++.dg/lookup: crash5.C forscope2.C 
	gcc/testsuite/g++.dg/conversion: const3.C 

Log message:
	Backport:
	2004-09-23  Andrew Pinski  <pinskia@physics.uc.edu>
	PR c++/17618
	* cvt.c (cp_convert_to_pointer): Return early when the type is
	an error_mark_node.
	
	2004-05-22  Roger Sayle  <roger@eyesopen.com>
	* name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by
	returning when TREE_TYPE is error_mark_node.
	* typeck.c (require_complete_type): Return error_mark_node if
	value's type is an error_mark_node.
	
	2004-11-02  Mark Mitchell  <mark@codesourcery.com>
	PR c++/18177
	* typeck.c (build_const_cast): Use error_operand_p.
	
	2004-09-23  Andrew Pinski  <pinskia@physics.uc.edu>
	PR c++/17618
	* g++.dg/lookup/crash5.C: New test.
	
	2004-05-22  Wolfgang Bangerth  <bangerth@dealii.org>
	Roger Sayle  <roger@eyesopen.com>
	* g++.dg/lookup/forscope2.C: New test case.
	
	2004-11-02  Mark Mitchell  <mark@codesourcery.com>
	PR c++/18177
	* g++.dg/conversion/const3.C: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3892.2.245&r2=1.3892.2.246
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cvt.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.151.4.4&r2=1.151.4.5
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/name-lookup.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.34.2.25&r2=1.34.2.26
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/typeck.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.519.2.30&r2=1.519.2.31
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3389.2.440&r2=1.3389.2.441
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/lookup/crash5.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.70.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/lookup/forscope2.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.76.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/conversion/const3.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.48.1