This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c++/8173: ICE in g++ on compiling Qt-retated code (PerlQt module)
- From: reichelt at igpm dot rwth-aachen dot de
- To: gcc-bugs at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org, marek dot rouchal at infineon dot com, nobody at gcc dot gnu dot org
- Date: 3 Dec 2002 01:35:07 -0000
- Subject: Re: c++/8173: ICE in g++ on compiling Qt-retated code (PerlQt module)
- Reply-to: reichelt at igpm dot rwth-aachen dot de, gcc-bugs at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org, marek dot rouchal at infineon dot com, nobody at gcc dot gnu dot org, gcc-gnats at gcc dot gnu dot org
Old Synopsis: Internal error in g++ on compiling Qt-retated code (PerlQt module)
New Synopsis: ICE in g++ on compiling Qt-retated code (PerlQt module)
State-Changed-From-To: open->analyzed
State-Changed-By: reichelt
State-Changed-When: Mon Dec 2 17:35:05 2002
State-Changed-Why:
Confirmed.
The code is in fact illegal, since in x_QTSManip::x_0 we have the expression
(QTSMFI)x[1].s_int
with x[1].s_int being an int and QTSMFI being defined as
typedef int (QTextStream::*QTSMFI)(int);
Mainline correctly reports
x_QTSManip.cpp: In static member function `static void
x_QTSManip::x_0(Smoke::StackItem*)':
x_QTSManip.cpp:10: error: invalid conversion from 'int' to 'int
(QTextStream::*)(int)'
However, gcc 2.95.x - 3.2.1 fail with an ICE.
A reduced testcase is the following:
-----------------------snip here--------------------------
struct A
{
typedef int (A::* P)(int);
A(P);
};
A a((A::P)1);
-----------------------snip here--------------------------
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8173