]> granicus.if.org Git - clang/commitdiff
Change isTemplate to return the actual template declaration.
authorAnders Carlsson <andersca@mac.com>
Sat, 26 Sep 2009 03:24:57 +0000 (03:24 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 26 Sep 2009 03:24:57 +0000 (03:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82839 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/Mangle.cpp

index 9766e585ff1e946c587c48bbd920fb94d98af689..f03f029198deb208ded2c7344e248d34f55c59de 100644 (file)
@@ -252,13 +252,13 @@ static bool isStdNamespace(const DeclContext *DC) {
   return NS->getOriginalNamespace()->getIdentifier()->isStr("std");
 }
 
-static const NamedDecl *isTemplate(const NamedDecl *ND, 
-                                   const TemplateArgumentList *&TemplateArgs) {
+static const TemplateDecl *
+isTemplate(const NamedDecl *ND, const TemplateArgumentList *&TemplateArgs) {
   // Check if we have a function template.
   if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(ND)){
-    if (FD->getPrimaryTemplate()) {
+    if (const TemplateDecl *TD = FD->getPrimaryTemplate()) {
       TemplateArgs = FD->getTemplateSpecializationArgs();
-      return FD;
+      return TD;
     }
   }
 
@@ -266,7 +266,7 @@ static const NamedDecl *isTemplate(const NamedDecl *ND,
   if (const ClassTemplateSpecializationDecl *Spec =
         dyn_cast<ClassTemplateSpecializationDecl>(ND)) {
     TemplateArgs = &Spec->getTemplateArgs();
-    return Spec;
+    return Spec->getSpecializedTemplate();
   }
     
   return 0;