From: mmitchel Date: Fri, 16 Feb 2001 07:57:51 +0000 (+0000) Subject: * pt.c (push_template_decl_real): Don't remangle the name of a X-Git-Tag: upstream/4.9.2~95873 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6336be2d93b5898ffd78bce0ee802c77eefb5c20;p=platform%2Fupstream%2Flinaro-gcc.git * pt.c (push_template_decl_real): Don't remangle the name of a class template. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39752 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 92f434b..a4413a9 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 f82981bd..2f34815 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 0000000..af0e3ca --- /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; +}; +};