From: Mark Mitchell Date: Fri, 16 Feb 2001 07:57:51 +0000 (+0000) Subject: pt.c (push_template_decl_real): Don't remangle the name of a class template. X-Git-Tag: prereleases/libstdc++-2.92~877 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=b60ecc04e87b9ca4aaa6c79f46800cc3cf49d3d7;p=gcc.git pt.c (push_template_decl_real): Don't remangle the name of a class template. * pt.c (push_template_decl_real): Don't remangle the name of a class template. From-SVN: r39752 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 92f434b17e2b..a4413a97e8a9 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2001-02-15 Mark Mitchell + + * pt.c (push_template_decl_real): Don't remangle the name of a + class template. + 2001-02-15 Jim Meyering * Make-lang.in (c++.install-common): Depend on installdirs. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index f82981bd9799..2f34815274b4 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -2718,7 +2718,9 @@ push_template_decl_real (decl, is_friend) { SET_TYPE_TEMPLATE_INFO (TREE_TYPE (tmpl), info); if ((!ctx || TREE_CODE (ctx) != FUNCTION_DECL) - && TREE_CODE (TREE_TYPE (decl)) != ENUMERAL_TYPE) + && TREE_CODE (TREE_TYPE (decl)) != ENUMERAL_TYPE + /* Don't change the name if we've already set it up. */ + && !IDENTIFIER_TEMPLATE (DECL_NAME (decl))) DECL_NAME (decl) = classtype_mangled_name (TREE_TYPE (decl)); } else if (DECL_LANG_SPECIFIC (decl)) diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend48.C b/gcc/testsuite/g++.old-deja/g++.pt/friend48.C new file mode 100644 index 000000000000..af0e3caf15c8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend48.C @@ -0,0 +1,17 @@ +// Build don't link: +// Origin: Mark Mitchell + +template +class C { + template + friend class ::C; +}; + +namespace N +{ +template +class D { + template + friend class N::D; +}; +};