SEE below for full source-code (14 lines total at the bottom) [arf]~/qq>gcc -v -save-temps bug.cpp Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/specs Configured with: /GCC/gcc-3.3.1-3/configure --with-gcc --with-gnu-ld --with-gnu-as --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/sbin --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,f77,pascal,java,objc --enable-libgcj --enable-threads=posix --with-system-zlib --enable-nls --without-included-gettext --enable-interpreter --enable-sjlj-exceptions --disable-version-specific-runtime-libs --enable-shared --disable-win32-registry --enable-java-gc=boehm --disable-hash-synchronization --verbose --target=i686-pc-cygwin --host=i686-pc-cygwin --build=i686-pc-cygwin Thread model: posix gcc version 3.3.1 (cygming special) /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/cc1plus.exe -E -D__GNUG__=3 -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=1 -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/../../../../include/w32api -idirafter /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/../../../../i686-pc-cygwin/lib/../../include/w32api bug.cpp bug.ii ignoring nonexistent directory "/usr/local/include" ignoring nonexistent directory "/usr/i686-pc-cygwin/include" ignoring duplicate directory "/usr/i686-pc-cygwin/lib/../../include/w32api" #include "..." search starts here: #include <...> search starts here: /usr/include/c++/3.3.1 /usr/include/c++/3.3.1/i686-pc-cygwin /usr/include/c++/3.3.1/backward /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/include /usr/include /usr/include/w32api End of search list. /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/cc1plus.exe -fpreprocessed bug.ii -quiet -dumpbase bug.cpp -auxbase bug -version -o bug.s GNU C++ version 3.3.1 (cygming special) (i686-pc-cygwin) compiled by GNU C version 3.3.1 (cygming special). GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=65406 bug.cpp: In member function `T Bug<T>::get() [with T = std::string]': bug.cpp:6: internal compiler error: in cp_expr_size, at cp/cp-lang.c:312 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions.
------------------------ Full source code: ------------------------ [arf]~/qq>cat bug.cpp #include <string> template<class T> class Bug { public: T get() { return true ? t : throw "bug"; } T t; }; int main(void) { Bug<std::string> s; s.get(); } -- Summary: compiler internal error with template class Product: gcc Version: 3.3.1 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: erkokl at yahoo dot com CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: see below GCC host triplet: see below GCC target triplet: see below http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21194