This is fallout from PR 10661: The attached file fails, after some error messages like here new-ice-33-2.ii:52879: instantiated from `pm::Set<pm::Vector<int>, pm::BuildBinary<pm::operations::cmp> >' new-ice-33-2.ii:52879: instantiated from here new-ice-33-2.ii:32392: error: template argument 1 is invalid new-ice-33-2.ii:32392: internal compiler error: tree check: expected tree_vec, have error_mark in mangle_class_name_for_template, at cp/pt.c:3845 It's very hard to cut down the code, so I attach a big chunk now and hope to have time to cut down on it later. Note that I can't presently tell whether it also fails in mainline, or whether it's a regression, since the code doesn't compile with 3.4 at all. W. Release: unknown
A reduced testcase is the following: -------------------------------------------- template <typename> struct A { template <typename> struct B {}; }; struct C { typedef X Y; A<int>::B<Y> b; }; -------------------------------------------- The error message from gcc 3.3 is: PR10706.cc:8: error: ISO C++ forbids declaration of `X' with no type PR10706.cc:8: error: parse error before `;' token PR10706.cc:9: error: `Y' was not declared in this scope PR10706.cc:9: error: template argument 1 is invalid PR10706.cc:9: internal compiler error: tree check: expected tree_vec, have error_mark in mangle_class_name_for_template, at cp/pt.c:3845 Please submit a full bug report, [etc.] The code crashes every release since gcc 2.95.x. Since it is not a regression and the problem is fixed on mainline, I close the PR.
Now also fixed for 3.3.3 (most likely by Kriang's fix for PR 10555).