cp-tree.h (copy_template_template_parm): Rename to ...
authorKriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
Fri, 6 Jul 2001 06:36:47 +0000 (06:36 +0000)
committerKriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org>
Fri, 6 Jul 2001 06:36:47 +0000 (06:36 +0000)
* cp-tree.h (copy_template_template_parm): Rename to ...
(bind_template_template_parm): ... here.
* tree.c (copy_template_template_parm): Rename to ...
(bind_template_template_parm): ... here.  Remove the case when
NEWARGS is NULL_TREE.
(copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
BOUND_TEMPLATE_TEMPLATE_PARM.
* pt.c (lookup_template_class): Adjust.

From-SVN: r43800

gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/pt.c
gcc/cp/tree.c

index 5e6195cf5322bcd6789a6f4a6e6b30491cadf5a8..eb0e0eb7cf1d6159e7341233acb3f16bf1960864 100644 (file)
@@ -1,3 +1,14 @@
+2001-07-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       * cp-tree.h (copy_template_template_parm): Rename to ...
+       (bind_template_template_parm): ... here.
+       * tree.c (copy_template_template_parm): Rename to ...
+       (bind_template_template_parm): ... here.  Remove the case when
+       NEWARGS is NULL_TREE.
+       (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
+       BOUND_TEMPLATE_TEMPLATE_PARM.
+       * pt.c (lookup_template_class): Adjust.
+
 2001-07-05  Jason Merrill  <jason_merrill@redhat.com>
 
        * cvt.c (convert_lvalue): New fn.
index 2ccb3b71655a18da48522d7979548fa5ab25a84e..66ce4fb0d31418aebb26bde50f84fdbb410753ce 100644 (file)
@@ -4355,7 +4355,7 @@ extern int promotes_to_aggr_type          PARAMS ((tree, enum tree_code));
 extern int is_aggr_type_2                      PARAMS ((tree, tree));
 extern const char *lang_printable_name         PARAMS ((tree, int));
 extern tree build_exception_variant            PARAMS ((tree, tree));
-extern tree copy_template_template_parm                PARAMS ((tree, tree));
+extern tree bind_template_template_parm                PARAMS ((tree, tree));
 extern tree array_type_nelts_total             PARAMS ((tree));
 extern tree array_type_nelts_top               PARAMS ((tree));
 extern tree break_out_target_exprs             PARAMS ((tree));
index d9fa17fe164a283f29a904560ce6091bada0a3ba..b6016402e16ffb361a51bba26b70c1db3378b280 100644 (file)
@@ -3912,8 +3912,7 @@ lookup_template_class (d1, arglist, in_decl, context, entering_scope, complain)
       if (arglist2 == error_mark_node)
        return error_mark_node;
 
-      parm = copy_template_template_parm (TREE_TYPE (template), arglist2);
-      TYPE_SIZE (parm) = 0;
+      parm = bind_template_template_parm (TREE_TYPE (template), arglist2);
       return parm;
     }
   else 
index 2dfc567caef1d02015cddfe5637b4b63d97e7bed..5ced7ef875a9a1eeb85281236bca18d8b89af1ad 100644 (file)
@@ -1112,47 +1112,33 @@ build_exception_variant (type, raises)
   return v;
 }
 
-/* Given a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM
-   node T, create a new one together with its 
-   lang_specific field and its corresponding *_DECL node.
-   If NEWARGS is not NULL_TREE, this parameter is bound with new set of
+/* Given a TEMPLATE_TEMPLATE_PARM node T, create a new
+   BOUND_TEMPLATE_TEMPLATE_PARM bound with NEWARGS as its template
    arguments.  */
 
 tree
-copy_template_template_parm (t, newargs)
+bind_template_template_parm (t, newargs)
      tree t;
      tree newargs;
 {
   tree decl = TYPE_NAME (t);
   tree t2;
 
-  if (newargs == NULL_TREE)
-    {
-      t2 = make_aggr_type (TREE_CODE (t));
-      decl = copy_decl (decl);
+  t2 = make_aggr_type (BOUND_TEMPLATE_TEMPLATE_PARM);
+  decl = build_decl (TYPE_DECL, DECL_NAME (decl), NULL_TREE);
 
-      /* No need to copy these.  */
-      TEMPLATE_TYPE_PARM_INDEX (t2) = TEMPLATE_TYPE_PARM_INDEX (t);
-      TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (t2) 
-       = TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (t);
-    }
-  else
-    {
-      t2 = make_aggr_type (BOUND_TEMPLATE_TEMPLATE_PARM);
-      decl = build_decl (TYPE_DECL, DECL_NAME (decl), NULL_TREE);
-
-      /* These nodes have to be created to reflect new TYPE_DECL and template
-         arguments.  */
-      TEMPLATE_TYPE_PARM_INDEX (t2) = copy_node (TEMPLATE_TYPE_PARM_INDEX (t));
-      TEMPLATE_PARM_DECL (TEMPLATE_TYPE_PARM_INDEX (t2)) = decl;
-      TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (t2)
-       = tree_cons (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL (t), 
-                         newargs, NULL_TREE);
-    }
+  /* These nodes have to be created to reflect new TYPE_DECL and template
+     arguments.  */
+  TEMPLATE_TYPE_PARM_INDEX (t2) = copy_node (TEMPLATE_TYPE_PARM_INDEX (t));
+  TEMPLATE_PARM_DECL (TEMPLATE_TYPE_PARM_INDEX (t2)) = decl;
+  TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (t2)
+    = tree_cons (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL (t), 
+                newargs, NULL_TREE);
 
   TREE_TYPE (decl) = t2;
   TYPE_NAME (t2) = decl;
   TYPE_STUB_DECL (t2) = decl;
+  TYPE_SIZE (t2) = 0;
 
   return t2;
 }
@@ -1564,10 +1550,6 @@ copy_tree_r (tp, walk_subtrees, data)
       if (TREE_CODE (*tp) == SCOPE_STMT)
        SCOPE_STMT_BLOCK (*tp) = NULL_TREE;
     }
-  else if (code == TEMPLATE_TEMPLATE_PARM
-          || code == BOUND_TEMPLATE_TEMPLATE_PARM)
-    /* These must be copied specially.  */
-    *tp = copy_template_template_parm (*tp, NULL_TREE);
   else if (TREE_CODE_CLASS (code) == 't')
     /* There's no need to copy types, or anything beneath them.  */
     *walk_subtrees = 0;