Look for substitutions when mangling TypenameTypes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82885 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp
index 447255c..660a36b 100644
--- a/lib/CodeGen/Mangle.cpp
+++ b/lib/CodeGen/Mangle.cpp
@@ -920,10 +920,13 @@
   const Type *QTy = T->getQualifier()->getAsType();
   if (const TemplateSpecializationType *TST = 
         dyn_cast<TemplateSpecializationType>(QTy)) {
-    TemplateDecl *TD = TST->getTemplateName().getAsTemplateDecl();
+    if (!mangleSubstitution(QualType(TST, 0))) {
+      TemplateDecl *TD = TST->getTemplateName().getAsTemplateDecl();
 
-    mangleTemplatePrefix(TD);
-    mangleTemplateArgs(TST->getArgs(), TST->getNumArgs());
+      mangleTemplatePrefix(TD);
+      mangleTemplateArgs(TST->getArgs(), TST->getNumArgs());
+      addSubstitution(QualType(TST, 0));
+    }
   } else if (const TemplateTypeParmType *TTPT = 
               dyn_cast<TemplateTypeParmType>(QTy)) {
     // We use the QualType mangle type variant here because it handles