This is GCC Bugzilla
This is GCC Bugzilla Version 2.20+
View Bug Activity | Format For Printing | Clone This Bug
You can download the file from here: http://home.JCABs-Rumblings.com/ftp/cpp_grammar_error.zip It's a ZIP archive including the preprocessed .ii file, the original C++ source file, and the error spew. You can read the tracking of the bug so far on the MinGW pages in SourceForge: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=632454&group_id=2435 Basically, when compiling the file, using this command: c:\mingw\bin\g++ -O2 -ftemplate-depth-500 -o cpp_grammar.o -c cpp_grammar.ii I get an error in a piece of code that looks like this: --- struct cpp_grammar: grammar<cpp_grammar> { ... template <typename ScannerT> struct definition: cpp_expressions<ScannerT> { ... template < typename ParserT > struct brace_block_functor { ... }; template < typename ParserT > static functor_parser<brace_block_functor<ParserT> > // line 2306 brace_block(ParserT const& parser) { return brace_block_functor<ParserT>(parser); }; ... }; ... }; --- The error (sans the "instantiated from" super-spew) says this: --- cpp_grammar.cpp:2306: type/value mismatch at argument 1 in template parameter list for `template<class FunctorT> struct spirit::functor_parser' cpp_grammar.cpp:2306: expected a type, got `brace_block_functor' cpp_grammar.cpp:2306: confused by earlier errors, bailing out --- This is patently wrong. In fact, I have a CygWin with GCC 3.0.3 that compiles this program perfectly. In tracking this with the MinGW people, they've tried this file with the newest 3.3 compiler, and gotten other errors. Release: MinGW 2.0.0-3 (GCC 3.2) Environment: Windows 2000, MinGW 2.0.0-3, Spirit 1.5.1 (latest CVS) How-To-Repeat: Compile the cpp_grammar.ii file from the ZIP file above, using the following command line: c:\mingw\bin\g++ -O2 -ftemplate-depth-500 -o cpp_grammar.o -c cpp_grammar.ii
State-Changed-From-To: open->analyzed State-Changed-Why: I can confirm the messages on Linux from your preprocessed sources, but it is very hard to tell whether they are justfied or not, as the file has some 59,000 lines and invokes all kinds of template stuff (not that I would be unused to that but this seems messy). Could you try to condense the problem into a smaller testcase where it is simpler to see whether the error is justified or not? Thanks Wolfgang
From: Juan Carlos Arevalo-Baeza <jcab@JCABs-Rumblings.com> To: <bangerth@dealii.org>, <gcc-bugs@gcc.gnu.org>, <gcc-prs@gcc.gnu.org>, <jcab@JCABs-Rumblings.com>, <nobody@gcc.gnu.org>, <gcc-gnats@gcc.gnu.org>, <gcc-bugs@gcc.gnu.org>, <gcc-prs@gcc.gnu.org>, <nobody@gcc.gnu.org> Cc: Subject: Re: c++/8442: Wrongful compiler error - file available Date: Mon, 4 Nov 2002 08:48:05 -0800 On 4 Nov 2002 15:55:11 -0000, bangerth@dealii.org wrote: >Synopsis: Wrongful compiler error - file available > >I can confirm the messages on Linux from your preprocessed >sources, but it is very hard to tell whether they are justfied >or not, as the file has some 59,000 lines and invokes all >kinds of template stuff (not that I would be unused to that >but this seems messy). Yes, Spirit is a complex beast. I'm sorry about that. I've= tried extracting the error bits, but I've been uncuccessful so= far. It seems to me that something in the chain of template= instantiations is fooling the compiler into thinking that either= brace_block_functor is not in scope, or something like that. >Could you try to condense the >problem into a smaller testcase where it is simpler to >see whether the error is justified or not? Maybe I can condense the error as I see it here. The code= looks like this: (line 2304.cpp, line 60573.ii) template < typename ParserT > static functor_parser<this_t::brace_block_functor<ParserT> > brace_block(ParserT const& parser) { return brace_block_functor<ParserT>(parser); }; functor_parser is a template class that takes a single type= parameter, and can be implicitly constructed from that type.= Defined in line 50729.ii. brace_block_functor is defined in the same scope as the= brace_block file above, as a template class that takes a single= template parameter. this_t is the current scope (class scope), but it is= inconsequential (it was a test trying to track down this= problem). You get the same error without it. For some reason, according to the error messages, the compiler= thinks that brace_block_functor should be a type, instead of a= template. I tried generating similar situations using simpler code,= without success. The problem is that the call to this function= is generated kind of deep into the template instantiations, and= extracting the call doesn't seem to show the problem. I'll keep trying. Thanx! =A0=A0=A0Salutaciones, =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0JCAB email: jcab@JCABs-Rumblings.com ICQ: 10913692 @WORK: 101728263 WWW: http://www.JCABs-Rumblings.com
From: Wolfgang Bangerth <bangerth@ticam.utexas.edu> To: Juan Carlos Arevalo-Baeza <jcab@JCABs-Rumblings.com> Cc: gcc-bugs@gcc.gnu.org, <gcc-prs@gcc.gnu.org>, <nobody@gcc.gnu.org>, <gcc-gnats@gcc.gnu.org> Subject: Re: c++/8442: Wrongful compiler error - file available Date: Mon, 4 Nov 2002 10:58:35 -0600 (CST) > Yes, Spirit is a complex beast. I'm sorry about that. I've tried > extracting the error bits, but I've been uncuccessful so far. It seems Start from the .ii file you have. First delete all the # lines, I use the following perl script for that usually perl -pi -s 's/^#.*\n//g;' your_file.ii (This way, gcc tells you the real location in the file where something is happening, not the location in the file from which you generated the .ii file.) Then start deleting parts of the file that are not necessary to show the problem. (Function bodies, classes that are only referenced in the function bodies you deleted, classes and namespaces that were only used in classes and namespaces you deleted, etc). In the beginning, the pieces you scrap are usually small, but the blocks can become very large at the end, so don't be scared if you don't make much progress in the beginning. This is a tedious task, and may take an hour or two, but in the end you usually end up with something that has 10-50 lines of code and still shows the problem. With such an example, it is also possible for someone who is not used to your code to see whether this is wrong or right. Otherwise, it is very hard to see... Regards Wolfgang ------------------------------------------------------------------------- Wolfgang Bangerth email: bangerth@ticam.utexas.edu www: http://www.ticam.utexas.edu/~bangerth
From: Juan Carlos Arevalo-Baeza <jcab@JCABs-Rumblings.com> To: <bangerth@ticam.utexas.edu> Cc: <gcc-bugs@gcc.gnu.org>, <gcc-prs@gcc.gnu.org>, <nobody@gcc.gnu.org>, <gcc-gnats@gcc.gnu.org> Subject: Re: c++/8442: Wrongful compiler error - file available Date: Tue, 5 Nov 2002 00:36:05 -0800 On Mon, 4 Nov 2002 10:58:35 -0600 (CST), Wolfgang Bangerth= wrote: > >>Yes, Spirit is a complex beast. I'm sorry about that. I've= tried >>extracting the error bits, but I've been uncuccessful so far.= It seems > >Start from the .ii file you have. First delete all the # lines,= I use the >following perl script for that usually >perl -pi -s 's/^#.*\n//g;' your_file.ii >(This way, gcc tells you the real location in the file where= something is >happening, not the location in the file from which you generated= the .ii >file.) Then start deleting parts of the file that are not= necessary to >show the problem. (Function bodies, classes that are only= referenced in >the function bodies you deleted, classes and namespaces that= were only >used in classes and namespaces you deleted, etc). In the= beginning, the >pieces you scrap are usually small, but the blocks can become= very large >at the end, so don't be scared if you don't make much progress= in the >beginning. > >This is a tedious task, and may take an hour or two, but in the= end you >usually end up with something that has 10-50 lines of code and= still shows >the problem. With such an example, it is also possible for= someone who is >not used to your code to see whether this is wrong or right.= Otherwise, it >is very hard to see... Ok. I managed to do as you say (turned out step by step as you= say <g>), and boiled it down to this code: --- template < class FunctorT > struct functor_parser { }; template < typename ScannerT > struct definition { template < typename ParserT > struct brace_block_functor { }; template < typename ParserT > static functor_parser<brace_block_functor<ParserT> >* brace_block(ParserT const& parser) { // line 15 return 0; }; }; definition<char const*> def; // line 20 --- Error spew: --- bug.ii: In instantiation of `definition<const char*>': bug.ii:20: instantiated from here bug.ii:15: type/value mismatch at argument 1 in template= parameter list for ` template<class FunctorT> struct functor_parser' bug.ii:15: expected a type, got `brace_block_functor' bug.ii:15: confused by earlier errors, bailing out --- This is clearly wrong. =A0=A0=A0Salutaciones, =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0JCAB email: jcab@JCABs-Rumblings.com ICQ: 10913692 @WORK: 101728263 WWW: http://www.JCABs-Rumblings.com
From: Reichelt <reichelt@igpm.rwth-aachen.de> To: jcab@JCABs-Rumblings.com, gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org Cc: Subject: Re: c++/8442: Wrongful compiler error - file available Date: Tue, 5 Nov 2002 16:33:19 +0100 Hi, here's a little cleaned-up testcase: --------------------------------snip here----------------------------- template <typename T> struct A {}; template <typename T> struct B { template <typename U> struct C {}; template <typename U> A<C<U> > foo(U); }; B<void> b; --------------------------------snip here----------------------------- With gcc 2.95.x and gcc 3.0.x the code compiles fine. With mainline we get the following ICE PR8442.cc: In instantiation of `B<void>': PR8442.cc:9: instantiated from here PR8442.cc:6: error: type/value mismatch at argument 1 in template parameter list for `template<class T> struct A' PR8442.cc:6: error: expected a type, got `C' PR8442.cc:6: internal compiler error: tree check: expected var_decl, have error_mark in tsubst_decl, at cp/pt.c:5793 Please submit a full bug report, [etc.] which is replaced by an "confused by earlier errors" on the 3.2 branch (checked on i686-pc-linux-gnu and mips-sgi-irix6.5). Since this a regression, I rated the PR "high priority". Greetings, Volker http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8442
Responsible-Changed-From-To: unassigned->lerdsuwa Responsible-Changed-Why: Will look at it.
From: Wolfgang Bangerth <bangerth@ticam.utexas.edu> To: gcc-gnats@gcc.gnu.org Cc: Subject: Re: c++:8442 Date: Sat, 14 Dec 2002 14:46:39 -0600 (CST) This is the ChangeLog of the patch that introduced the failure in the high priority PR 8442: 2002-01-02 Nathan Sidwell <nathan@codesourcery.com> PR c++/5213 * pt.c (convert_template_argument): Be more careful determining when RECORD_TYPE templates are or are not templates. The testcase is as follows: --------------------- template <typename T> struct A {}; template <typename T> struct B { template <typename U> struct C {}; template <typename U> A<C<U> > foo(U); }; B<void> b; --------------------- and it fails with this (line numbers differ) where it succeeded before: bash-2.05$ ../gcc/bin-2002-01-03/gcc/cc1plus -quiet PR8442.cc PR8442.cc: In instantiation of `B<void>': PR8442.cc:14: instantiated from here PR8442.cc:11: type/value mismatch at argument 1 in template parameter list for `template<class T> struct A' PR8442.cc:11: expected a type, got `C' PR8442.cc:11: confused by earlier errors, bailing out Nathan, would you mind taking a look at this? Regards Wolfgang ------------------------------------------------------------------------- Wolfgang Bangerth email: bangerth@ticam.utexas.edu www: http://www.ticam.utexas.edu/~bangerth
From: Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> To: jcab@JCABs-Rumblings.com, gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, lerdsuwa@gcc.gnu.org, gcc-bugs@gcc.gnu.org Cc: Subject: Re: c++/8442: [3.2/3.3 regression] ICE on nested template classes Date: Mon, 16 Dec 2002 23:23:06 +0700 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8442 Patch submitted for 3.2 and 3.3: http://gcc.gnu.org/ml/gcc-patches/2002-12/msg00172.html It is waiting for approval. For the main trunk, I would like to wait for the new parser merge first before relook at this PR. --Kriang
From: lerdsuwa@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c++/8442 Date: 18 Dec 2002 14:58:36 -0000 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_2-branch Changes by: lerdsuwa@gcc.gnu.org 2002-12-18 06:58:35 Modified files: gcc/cp : ChangeLog decl2.c pt.c gcc/testsuite : ChangeLog gcc/testsuite/g++.dg/template: ttp3.C Added files: gcc/testsuite/g++.dg/template: type2.C Log message: PR c++/8442 * decl2.c (handle_class_head): Verify if the looked up name is a type or template. * pt.c (convert_template_argument): Fix type or template template parameter decision logic. * g++.dg/template/type2.C: New test. * g++.dg/template/ttp3.C: Change expected error message. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.2685.2.114.2.54&r2=1.2685.2.114.2.55 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl2.c.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.520.2.7.2.10&r2=1.520.2.7.2.11 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/pt.c.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.578.2.11.2.7&r2=1.578.2.11.2.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1672.2.166.2.73&r2=1.1672.2.166.2.74 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/type2.C.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/ttp3.C.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1&r2=1.1.22.1
From: lerdsuwa@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c++/8442 Date: 18 Dec 2002 16:35:12 -0000 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_3-branch Changes by: lerdsuwa@gcc.gnu.org 2002-12-18 08:35:12 Modified files: gcc/cp : ChangeLog decl2.c pt.c gcc/testsuite : ChangeLog gcc/testsuite/g++.dg/template: ttp3.C Added files: gcc/testsuite/g++.dg/template: type2.C Log message: PR c++/8442 * decl2.c (handle_class_head): Verify if the looked up name is a type or template. * pt.c (convert_template_argument): Fix type or template template parameter decision logic. * g++.dg/template/type2.C: New test. * g++.dg/template/ttp3.C: Change expected error message. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.3076&r2=1.3076.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl2.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.575&r2=1.575.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/pt.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.635&r2=1.635.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.2261&r2=1.2261.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/type2.C.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=NONE&r2=1.1.4.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/ttp3.C.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.1&r2=1.1.46.1
From: Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> To: jcab@JCABs-Rumblings.com, gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, lerdsuwa@gcc.gnu.org, gcc-bugs@gcc.gnu.org Cc: Subject: Re: c++/8442: [3.2/3.3 regression] ICE on nested template classes Date: Thu, 19 Dec 2002 21:35:09 +0700 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8442 Fixed in 3.2 and 3.3 branch.
From: Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, lerdsuwa@gcc.gnu.org, gcc-prs@gcc.gnu.org, jcab@JCABs-Rumblings.com Cc: Subject: Re: c++/8442: [3.4 regression] ICE on nested template classes Date: Mon, 27 Jan 2003 17:24:24 +0700 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8442 Patch submitted for 3.4: http://gcc.gnu.org/ml/gcc-patches/2003-01/msg02100.html
From: Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> To: gcc-prs@gcc.gnu.org, jcab@JCABs-Rumblings.com, gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org, lerdsuwa@gcc.gnu.org Cc: Subject: Re: c++/8442: [3.4 regression] ICE on nested template classes Date: Fri, 16 May 2003 22:38:51 +0700 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8442 A revised patch is just submitted: http://gcc.gnu.org/ml/gcc-patches/2003-05/msg01475.html
This no longer ICE on the mainline (20030715) but gcc still does not accept it.
New revised patch submitted: http://gcc.gnu.org/ml/gcc-patches/2003-07/msg01960.html
Subject: Bug 8442 CVSROOT: /cvs/gcc Module name: gcc Changes by: lerdsuwa@gcc.gnu.org 2003-08-01 15:06:02 Modified files: gcc/cp : ChangeLog NEWS class.c cp-tree.h decl.c decl2.c parser.c pt.c rtti.c gcc/testsuite : ChangeLog gcc/testsuite/g++.dg/template: ttp3.C gcc/testsuite/g++.old-deja/g++.law: visibility13.C gcc/testsuite/g++.old-deja/g++.niklas: t135.C gcc/testsuite/g++.old-deja/g++.pt: ttp41.C ttp43.C ttp44.C Added files: gcc/testsuite/g++.dg/template: elab1.C type2.C Log message: PR c++/8442, c++/8806 * decl.c (qualify_lookup): Accept TEMPLATE_DECL if types are preferred. (check_elaborated_type_specifier): Add allow_template_p parameter. Check tag mismatch and class template. (xref_tag): Add template_header_p parameter. Add assertion that name is an IDENTIFIER_NODE. Remove implicit typename warning. Simplify lookup process if globalize is true. (cxx_init_decl_processing): Adjust call to xref_tag. (xref_tag_from_type): Likewise. * decl2.c (handle_class_head): Likewise. * parser.c (cp_parser_elaborated_type_specifier, cp_parser_class_head): Likewise. * rtti.c (init_rtti_processing, build_dynamic_cast1, tinfo_base_init, emit_support_tinfos): Likewise. * class.c (is_base_of_enclosing_class): Remove. * pt.c (convert_template_argument): Don't accept RECORD_TYPE as template template argument. * cp-tree.h (xref_tag): Adjust declaration. (is_base_of_enclosing_class): Remove. * NEWS: Document template template argument change. * g++.dg/template/elab1.C: Likewise. * g++.dg/template/type2.C: Likewise. * g++.dg/template/ttp3.C: Adjust expected error message. * g++.old-deja/g++.law/visibility13.C: Likewise. * g++.old-deja/g++.niklas/t135.C: Likewise. * g++.old-deja/g++.pt/ttp41.C: Likewise. * g++.old-deja/g++.pt/ttp43.C: Use qualified name for template template argument. * g++.old-deja/g++.pt/ttp44.C: Likewise. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.3578&r2=1.3579 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/NEWS.diff?cvsroot=gcc&r1=1.39&r2=1.40 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/class.c.diff?cvsroot=gcc&r1=1.559&r2=1.560 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cp-tree.h.diff?cvsroot=gcc&r1=1.894&r2=1.895 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.c.diff?cvsroot=gcc&r1=1.1105&r2=1.1106 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl2.c.diff?cvsroot=gcc&r1=1.654&r2=1.655 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parser.c.diff?cvsroot=gcc&r1=1.96&r2=1.97 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/pt.c.diff?cvsroot=gcc&r1=1.747&r2=1.748 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/rtti.c.diff?cvsroot=gcc&r1=1.171&r2=1.172 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.2942&r2=1.2943 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/elab1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/type2.C.diff?cvsroot=gcc&r1=1.1&r2=1.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/ttp3.C.diff?cvsroot=gcc&r1=1.1&r2=1.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.old-deja/g++.law/visibility13.C.diff?cvsroot=gcc&r1=1.10&r2=1.11 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.old-deja/g++.niklas/t135.C.diff?cvsroot=gcc&r1=1.3&r2=1.4 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.old-deja/g++.pt/ttp41.C.diff?cvsroot=gcc&r1=1.3&r2=1.4 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.old-deja/g++.pt/ttp43.C.diff?cvsroot=gcc&r1=1.3&r2=1.4 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.old-deja/g++.pt/ttp44.C.diff?cvsroot=gcc&r1=1.3&r2=1.4
Fixed in GCC 3.4.