Index: gcc/testsuite/g++.dg/template/crash55.C =================================================================== --- gcc/testsuite/g++.dg/template/crash55.C (revision 0) +++ gcc/testsuite/g++.dg/template/crash55.C (revision 0) @@ -0,0 +1,6 @@ +//PR c++/27668 + +template // { dg-error "nested-name-specifier|two or more|valid type" } +struct A {}; + +template void foo(A); // { dg-error "type/value mismatch|constant" } Index: gcc/cp/pt.c =================================================================== --- gcc/cp/pt.c (revision 115597) +++ gcc/cp/pt.c (working copy) @@ -4069,7 +4069,8 @@ coerce_template_parms (tree parms, in_decl); if (arg == error_mark_node) - lost++; + return error_mark_node; + TREE_VEC_ELT (new_inner_args, i) = arg; }