diff options
author | Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu> | 1998-03-20 18:11:26 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1998-03-20 13:11:26 -0500 |
commit | 362badb092f963572a3be89c74bc814162b024bf (patch) | |
tree | 94b64fe0f99ddb0d3ecbc900981f538d85919e36 | |
parent | 990249560440183d0dfac65faf64be91fdbeed03 (diff) | |
download | gcc-362badb092f963572a3be89c74bc814162b024bf.zip gcc-362badb092f963572a3be89c74bc814162b024bf.tar.gz gcc-362badb092f963572a3be89c74bc814162b024bf.tar.bz2 |
* pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
From-SVN: r18735
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/pt.c | 23 |
2 files changed, 13 insertions, 14 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f8862c0..dd33cd6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +Fri Mar 20 18:07:39 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu> + + * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify. + Fri Mar 20 10:42:07 1998 Jason Merrill <jason@yorick.cygnus.com> * decl.c (make_implicit_typename): Rewrite removed code. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index d372e11..3454b6e 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -3689,20 +3689,7 @@ tsubst (t, args, in_decl) { case TEMPLATE_TYPE_PARM: case TEMPLATE_TEMPLATE_PARM: - - if (TREE_CODE (t) == TEMPLATE_TEMPLATE_PARM - && CLASSTYPE_TEMPLATE_INFO (t)) - { - tree argvec = tsubst (CLASSTYPE_TI_ARGS (t), - args, in_decl); - r = lookup_template_class (TYPE_NAME (t), argvec, in_decl, - DECL_CONTEXT (TYPE_NAME (t))); - r = cp_build_type_variant (r, TYPE_READONLY (t), - TYPE_VOLATILE (t)); - } - else - r = copy_node (t); - + r = copy_node (t); TEMPLATE_TYPE_PARM_INDEX (r) = reduce_template_parm_level (TEMPLATE_TYPE_PARM_INDEX (t), r, levels); @@ -3710,6 +3697,14 @@ tsubst (t, args, in_decl) TYPE_MAIN_VARIANT (r) = r; TYPE_POINTER_TO (r) = NULL_TREE; TYPE_REFERENCE_TO (r) = NULL_TREE; + + if (TREE_CODE (t) == TEMPLATE_TEMPLATE_PARM + && CLASSTYPE_TEMPLATE_INFO (t)) + { + tree argvec = tsubst (CLASSTYPE_TI_ARGS (t), args, in_decl); + CLASSTYPE_TEMPLATE_INFO (r) + = perm_tree_cons (TYPE_NAME (t), argvec, NULL_TREE); + } break; case TEMPLATE_PARM_INDEX: |