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
This commit is contained in:
Jason Merrill 2000-06-21 12:37:06 -04:00 committed by Jason Merrill
parent f433539a26
commit 88e1b92a3d
2 changed files with 11 additions and 13 deletions

View 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.

View 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;
}