Commit 5c62e661 by Paolo Carlini Committed by Paolo Carlini

re PR c++/47974 (ICE: tree check: expected tree_vec, have error_mark in…

re PR c++/47974 (ICE: tree check: expected tree_vec, have error_mark in tsubst_template_args, at cp/pt.c:8969 on invalid code)

/cp
2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/47974
	* pt.c (tsubst_template_args): Check argument t for error_mark_node.

/testsuite
2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/47974
	* g++.dg/template/crash106.C: New.

From-SVN: r170658
parent ff4bfb10
2011-03-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/47974
* pt.c (tsubst_template_args): Check argument t for error_mark_node.
2011-03-03 Jason Merrill <jason@redhat.com>
PR c++/47950
......
......@@ -8966,9 +8966,14 @@ static tree
tsubst_template_args (tree t, tree args, tsubst_flags_t complain, tree in_decl)
{
tree orig_t = t;
int len = TREE_VEC_LENGTH (t);
int need_new = 0, i, expanded_len_adjust = 0, out;
tree *elts = XALLOCAVEC (tree, len);
int len, need_new = 0, i, expanded_len_adjust = 0, out;
tree *elts;
if (t == error_mark_node)
return error_mark_node;
len = TREE_VEC_LENGTH (t);
elts = XALLOCAVEC (tree, len);
for (i = 0; i < len; i++)
{
......
2011-03-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/47974
* g++.dg/template/crash106.C: New.
2011-03-03 Jakub Jelinek <jakub@redhat.com>
PR c/47963
......
// PR c++/47974
typedef double T;
struct A
{
template<T> void foo(); // { dg-error "type" }
};
template<T N = 0, void (A::*)() = &A::foo<N> > struct B {}; // { dg-error "type|declared" }
B<> b; // { dg-error "type|declaration" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment