pt.c (tsubst_decl, [...]): Fix test for TYPE_DECLs for which we don't need to look...
authorJason Merrill <jason@redhat.com>
Wed, 21 Jun 2000 16:37:06 +0000 (12:37 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 21 Jun 2000 16:37:06 +0000 (12:37 -0400)
        * pt.c (tsubst_decl, case TYPE_DECL): Fix test for TYPE_DECLs
        for which we don't need to look for instantiations.

From-SVN: r34633

gcc/cp/ChangeLog
gcc/cp/pt.c

index 4829b3931d414d809ff680e73f579a4d9cdbeebe..f5b4c318f5a7b8032173fc0a894d30acb1303113 100644 (file)
@@ -1,3 +1,8 @@
+2000-06-20  Jason Merrill  <jason@redhat.com>
+
+       * pt.c (tsubst_decl, case TYPE_DECL): Fix test for TYPE_DECLs 
+       for which we don't need to look for instantiations.
+
 2000-06-21  Nathan Sidwell  <nathan@codesourcery.com>
 
        * parse.y (program): Always call finish_translation_unit.
index 4250eee2304e035863cdc7381156a09eee6ddf7c..70ad846e69b0fcc9fffde9aaca1bef6115a58f19 100644 (file)
@@ -5873,20 +5873,13 @@ tsubst_decl (t, args, type, in_decl)
       break;
 
     case TYPE_DECL:
-      if (DECL_IMPLICIT_TYPEDEF_P (t))
+      if (TREE_CODE (type) == TEMPLATE_TEMPLATE_PARM
+         || t == TYPE_MAIN_DECL (TREE_TYPE (t)))
        {
-         /* For an implicit typedef, we just want the implicit
-            typedef for the tsubst'd type.  We've already got the
-            tsubst'd type, as TYPE, so we just need it's associated
-            declaration.  */
-         r = TYPE_NAME (type);
-         break;
-       }
-      else if (TREE_CODE (type) == TEMPLATE_TYPE_PARM
-              || TREE_CODE (type) == TEMPLATE_TEMPLATE_PARM)
-       {
-         /* For a template type parameter, we don't have to do
-            anything special.  */
+         /* If this is the canonical decl, we don't have to mess with
+             instantiations, and often we can't (for typename, template
+            type parms and such).  Note that TYPE_NAME is not correct for
+            the above test if we've copied the type for a typedef.  */
          r = TYPE_NAME (type);
          break;
        }