This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/20428] New: ICE for local class in a function template
- From: "j-wang3 at northwestern dot edu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 Mar 2005 17:42:48 -0000
- Subject: [Bug c++/20428] New: ICE for local class in a function template
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Keyword (?):
ice-on-valid-code
GCC versions tested:
GNU C++ version 3.4.1 (i686-pc-linux-gnu)
compiled by GNU C version 3.3.3 (SuSE Linux).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129465
GNU CPP version 3.2 20020903 (Red Hat Linux 8.0 3.2-7) (cpplib) (i386 Linux/ELF)
GNU C++ version 3.2 20020903 (Red Hat Linux 8.0 3.2-7) (i386-redhat-linux)
compiled by GNU C version 3.2 20020903 (Red Hat Linux 8.0 3.2-7).
GNU C++ version 3.4.2 (mingw-special) (mingw32)
compiled by GNU C version 3.4.2 (mingw-special).
GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=65398
Source file that causes ICE:
************* buggy.cpp ********************************
struct buggy_i
{
virtual void release() = 0;
protected:
~buggy_i() {}
};
template <class T>
buggy_i *test(T i)
{
struct test_t : public buggy_i
{
T i_;
virtual void release() {delete this;}
test_t(T i) : i_(i) {}
};
return new test_t(i);
}
int main(int argc, char *argv[])
{
buggy_i *p = test(10);
return 0;
}
*********************************************************
Detailed output for the version 3.4.1:
(Other versions give exactly the same ICE message.)
XXXXXXXXXXXXXX> g++ -v -c buggy.cpp
Reading specs from /usr/local/unison/lib/gcc/i686-pc-linux-gnu/3.4.1/specs
Configured with: ./configure --prefix=/usr/local/unison :
(reconfigured) ./configure --prefix=/usr/local/unison --enable-languages=c,c++
Thread model: posix
gcc version 3.4.1
/usr/local/unison/libexec/gcc/i686-pc-linux-gnu/3.4.1/cc1plus -quiet -v -
D_GNU_SOURCE buggy.cpp -quiet -dumpbase buggy.cpp -mtune=pentiumpro -auxbase
buggy -version -o /tmp/ccEIMEQg.s
ignoring nonexistent directory "/usr/local/unison/lib/gcc/i686-pc-linux-
gnu/3.4.1/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/unison/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../include/c++/3.4.1
/usr/local/unison/lib/gcc/i686-pc-linux-
gnu/3.4.1/../../../../include/c++/3.4.1/i686-pc-linux-gnu
/usr/local/unison/lib/gcc/i686-pc-linux-
gnu/3.4.1/../../../../include/c++/3.4.1/backward
/usr/local/include
/usr/local/unison/include
/usr/local/unison/lib/gcc/i686-pc-linux-gnu/3.4.1/include
/usr/include
End of search list.
GNU C++ version 3.4.1 (i686-pc-linux-gnu)
compiled by GNU C version 3.3.3 (SuSE Linux).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129465
buggy.cpp: In member function `void test(T)::test_t::release() [with T = int]':
buggy.cpp:28: instantiated from here
buggy.cpp:16: internal compiler error: in find_function_data, at function.c:315
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
--
Summary: ICE for local class in a function template
Product: gcc
Version: 3.4.1
Status: UNCONFIRMED
Severity: critical
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: j-wang3 at northwestern dot edu
CC: gcc-bugs at gcc dot gnu dot org,j-wang3 at northwestern
dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20428