Commit 94fc547c by Mark Mitchell Committed by Mark Mitchell

re PR c++/5919 (ICE when passing variable array to template function)

	PR c++/5919
	* g++.dg/template/varmod1.C: New test.

	PR c++/5919
	* pt.c (unify): Use variably_modified_type_p to test validity of
	template argument types.

From-SVN: r59698
parent a82d6da5
2002-12-01 Mark Mitchell <mark@codesourcery.com>
PR c++/5919
* pt.c (unify): Use variably_modified_type_p to test validity of
template argument types.
PR c++/8727
* cp-tree.h (lang_type_class): Add typeinfo_var.
(CLASSTYPE_TYPEINFO_VAR): New macro.
......
......@@ -8852,21 +8852,17 @@ unify (tparms, targs, parm, arg, strict)
return 0;
else if (targ)
return 1;
}
/* Make sure that ARG is not a variable-sized array. (Note that
were talking about variable-sized arrays (like `int[n]'),
rather than arrays of unknown size (like `int[]').) We'll
get very confused by such a type since the bound of the array
will not be computable in an instantiation. Besides, such
types are not allowed in ISO C++, so we can do as we please
here. */
if (TREE_CODE (arg) == ARRAY_TYPE
&& !uses_template_parms (arg)
&& TYPE_DOMAIN (arg)
&& (TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (arg)))
!= INTEGER_CST))
return 1;
/* Make sure that ARG is not a variable-sized array. (Note
that were talking about variable-sized arrays (like
`int[n]'), rather than arrays of unknown size (like
`int[]').) We'll get very confused by such a type since
the bound of the array will not be computable in an
instantiation. Besides, such types are not allowed in
ISO C++, so we can do as we please here. */
if (variably_modified_type_p (arg))
return 1;
}
TREE_VEC_ELT (targs, idx) = arg;
return 0;
......
2002-12-01 Mark Mitchell <mark@codesourcery.com>
PR c++/5919
* g++.dg/template/varmod1.C: New test.
PR c++/8727
* g++.dg/inherit/typeinfo1.C: New test.
......
// { dg-options "-w" }
template<typename T> void foo(T);
void bar()
{
int i;
int A[i][i];
foo(A); // { dg-error }
}
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