The code is template<class a>class b{friend b<a>a::c();}; template<class a>b<a>a::c(){return b<a>();}
The preprocessed code is # 1 "stupid.cc" # 1 "<built-in>" # 1 "<command line>" # 1 "stupid.cc" template<class a>class b{friend b<a>a::c();}; template<class a>b<a>a::c(){return b<a>();} gcc was built on Fedora Core 4; configured with command: ../gcc-4.1.2/configure --prefix=$HOME/gcc412 --enable-languages=c,c++ the command line producing error is g++ -v --save-temp -Wall -c stupid.cc 2> err the error message is: Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../gcc-4.1.2/configure --prefix=/home/dti/gcc412 --enable-languages=c,c++ Thread model: posix gcc version 4.1.2 /home/dti/gcc412/libexec/gcc/i686-pc-linux-gnu/4.1.2/cc1plus -E -quiet -v -D_GNU_SOURCE stupid.cc -mtune=pentiumpro -Wall -fpch-preprocess -o stupid.ii ignoring nonexistent directory "/home/dti/gcc412/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /home/dti/gcc412/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../include/c++/4.1.2 /home/dti/gcc412/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../include/c++/4.1.2/i686-pc-linux-gnu /home/dti/gcc412/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../include/c++/4.1.2/backward /usr/local/include /home/dti/gcc412/include /home/dti/gcc412/lib/gcc/i686-pc-linux-gnu/4.1.2/include /usr/include End of search list. /home/dti/gcc412/libexec/gcc/i686-pc-linux-gnu/4.1.2/cc1plus -fpreprocessed stupid.ii -quiet -dumpbase stupid.cc -mtune=pentiumpro -auxbase stupid -Wall -version -o stupid.s GNU C++ version 4.1.2 (i686-pc-linux-gnu) compiled by GNU C version 4.0.0 20050519 (Red Hat 4.0.0-8). GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64266 Compiler executable checksum: bf947049f66570c1ab11b37642201042 stupid.cc:2: internal compiler error: in is_ancestor, at cp/name-lookup.c:2236 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. g++ 4.0.4 made similarly produces Segmentation fault: Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../gcc-4.0.4/configure --prefix=/home/dti/gcc404 --enable-languages=c,c++ Thread model: posix gcc version 4.0.4 /home/dti/gcc404/libexec/gcc/i686-pc-linux-gnu/4.0.4/cc1plus -quiet -v -D_GNU_SOURCE stupid.cc -quiet -dumpbase stupid.cc -mtune=pentiumpro -auxbase stupid -Wall -version -o /tmp/cc85lGkB.s ignoring nonexistent directory "/home/dti/gcc404/lib/gcc/i686-pc-linux-gnu/4.0.4/../../../../i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /home/dti/gcc404/lib/gcc/i686-pc-linux-gnu/4.0.4/../../../../include/c++/4.0.4 /home/dti/gcc404/lib/gcc/i686-pc-linux-gnu/4.0.4/../../../../include/c++/4.0.4/i686-pc-linux-gnu /home/dti/gcc404/lib/gcc/i686-pc-linux-gnu/4.0.4/../../../../include/c++/4.0.4/backward /usr/local/include /home/dti/gcc404/include /home/dti/gcc404/lib/gcc/i686-pc-linux-gnu/4.0.4/include /usr/include End of search list. GNU C++ version 4.0.4 (i686-pc-linux-gnu) compiled by GNU C version 4.0.0 20050519 (Red Hat 4.0.0-8). GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64266 stupid.cc: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. g++ 3.4.6 works fine (complains about the stupid.cc with no internal error) -- Summary: incorrect c++ code produces g++ internal error Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ineiev at yahoo dot co dot uk GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31277