OSDN Git Service

* pt.c (tsubst_decl, case TYPE_DECL): Fix test for TYPE_DECLs
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Jun 2000 16:37:06 +0000 (16:37 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Jun 2000 16:37:06 +0000 (16:37 +0000)
        for which we don't need to look for instantiations.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34633 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 4829b39..f5b4c31 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 4250eee..70ad846 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;
        }