From 2ee3fca27ab8e6254586c5b42efb086df4bf76ac Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Fri, 18 Sep 2009 20:11:09 +0000 Subject: [PATCH] More mangling work. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82265 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/Mangle.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp index 5df2a34def..057d57e951 100644 --- a/lib/CodeGen/Mangle.cpp +++ b/lib/CodeGen/Mangle.cpp @@ -511,8 +511,15 @@ void CXXNameMangler::manglePrefix(const DeclContext *DC) { if (mangleSubstitution(cast(DC))) return; - manglePrefix(DC->getParent()); - mangleUnqualifiedName(cast(DC)); + // Check if we have a template. + const TemplateArgumentList *TemplateArgs = 0; + if (const NamedDecl *TD = isTemplate(cast(DC), TemplateArgs)) { + mangleTemplatePrefix(TD); + mangleTemplateArgumentList(*TemplateArgs); + } else { + manglePrefix(DC->getParent()); + mangleUnqualifiedName(cast(DC)); + } addSubstitution(cast(DC)); } @@ -790,11 +797,6 @@ void CXXNameMangler::mangleType(const TagType *T) { mangleName(T->getDecl()->getTypedefForAnonDecl()); else mangleName(T->getDecl()); - - // If this is a class template specialization, mangle the template arguments. - if (ClassTemplateSpecializationDecl *Spec - = dyn_cast(T->getDecl())) - mangleTemplateArgumentList(Spec->getTemplateArgs()); } // ::= -- 2.50.1