From: Jason Merrill Date: Wed, 21 Jun 2000 16:37:06 +0000 (-0400) Subject: pt.c (tsubst_decl, [...]): Fix test for TYPE_DECLs for which we don't need to look... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=88e1b92a3da5eb3f91b74f27b5fb93f43f0aa596;p=gcc.git pt.c (tsubst_decl, [...]): Fix test for TYPE_DECLs for which we don't need to look for instantiations. * 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4829b3931d4..f5b4c318f5a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-06-20 Jason Merrill + + * 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 * parse.y (program): Always call finish_translation_unit. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 4250eee2304..70ad846e69b 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -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; }