Commit 5db698f6 by Mark Mitchell Committed by Mark Mitchell

decl.c (grokdeclarator): Undo 1998-12-14 change.

	* decl.c (grokdeclarator): Undo 1998-12-14 change.
	* tree.c (build_cplus_array_type_1): Likewise.
	* pt.c (instantiate_class_template): Remove misleading comment.
	(tsubst_aggr_type): Substitute if there are template parameters,
	regardless of whether or not they use template arguments.
	(unify): Likewise, but for unification.

From-SVN: r24656
parent 39268973
1999-01-13 Mark Mitchell <mark@markmitchell.com>
* decl.c (grokdeclarator): Undo 1998-12-14 change.
* tree.c (build_cplus_array_type_1): Likewise.
* pt.c (instantiate_class_template): Remove misleading comment.
(tsubst_aggr_type): Substitute if there are template parameters,
regardless of whether or not they use template arguments.
(unify): Likewise, but for unification.
1999-01-12 Richard Henderson <rth@cygnus.com> 1999-01-12 Richard Henderson <rth@cygnus.com>
* cp-tree.h (flag_permissive): Declare extern. * cp-tree.h (flag_permissive): Declare extern.
......
...@@ -9890,9 +9890,13 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) ...@@ -9890,9 +9890,13 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
&& TREE_TYPE (size) == TREE_TYPE (TREE_OPERAND (size, 0))) && TREE_TYPE (size) == TREE_TYPE (TREE_OPERAND (size, 0)))
size = TREE_OPERAND (size, 0); size = TREE_OPERAND (size, 0);
/* If this involves a template parameter, it'll be /* If this involves a template parameter, it will be a
constant, but we don't know what the value is yet. */ constant at instantiation time, but we don't know
if (uses_template_parms (size)) what the value is yet. Even if no template
parameters are involved, we may an expression that
is not a constant; we don't even simplify `1 + 2'
when processing a template. */
if (processing_template_decl)
{ {
/* Resolve a qualified reference to an enumerator or /* Resolve a qualified reference to an enumerator or
static const data member of ours. */ static const data member of ours. */
......
...@@ -4475,9 +4475,7 @@ instantiate_class_template (type) ...@@ -4475,9 +4475,7 @@ instantiate_class_template (type)
struct S<int> {}; struct S<int> {};
Now, the `S<U>' in `f<int>' is the specialization, not an Now, the `S<U>' in `f<int>' is the specialization, not an
instantiation of the original template. Mark the type as instantiation of the original template. */
complete, in the same way that we do for a definition of a
template class. */
goto end; goto end;
/* Determine what specialization of the original template to /* Determine what specialization of the original template to
...@@ -5043,7 +5041,7 @@ tsubst_aggr_type (t, args, in_decl, entering_scope) ...@@ -5043,7 +5041,7 @@ tsubst_aggr_type (t, args, in_decl, entering_scope)
/* else fall through */ /* else fall through */
case ENUMERAL_TYPE: case ENUMERAL_TYPE:
case UNION_TYPE: case UNION_TYPE:
if (uses_template_parms (t)) if (TYPE_TEMPLATE_INFO (t))
{ {
tree argvec; tree argvec;
tree context; tree context;
...@@ -7671,7 +7669,7 @@ unify (tparms, targs, parm, arg, strict, explicit_mask) ...@@ -7671,7 +7669,7 @@ unify (tparms, targs, parm, arg, strict, explicit_mask)
if (TREE_CODE (arg) != TREE_CODE (parm)) if (TREE_CODE (arg) != TREE_CODE (parm))
return 1; return 1;
if (CLASSTYPE_TEMPLATE_INFO (parm) && uses_template_parms (parm)) if (CLASSTYPE_TEMPLATE_INFO (parm))
{ {
tree t = NULL_TREE; tree t = NULL_TREE;
if (strict & UNIFY_ALLOW_DERIVED) if (strict & UNIFY_ALLOW_DERIVED)
......
...@@ -416,8 +416,7 @@ build_cplus_array_type_1 (elt_type, index_type) ...@@ -416,8 +416,7 @@ build_cplus_array_type_1 (elt_type, index_type)
saveable_obstack = &permanent_obstack; saveable_obstack = &permanent_obstack;
} }
if (uses_template_parms (elt_type) if (processing_template_decl)
|| uses_template_parms (index_type))
{ {
t = make_node (ARRAY_TYPE); t = make_node (ARRAY_TYPE);
TREE_TYPE (t) = elt_type; TREE_TYPE (t) = elt_type;
......
// Build don't link:
template <class T>
void f()
{
int i[1 << 3];
}
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