Just mangle substituted template parameter types as unresolved types.
This is kindof questionable but seems to do more-or-less the right thing.
This is not a particularly friendly part of the ABI.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134227 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/ItaniumMangle.cpp b/lib/AST/ItaniumMangle.cpp
index 205e887..9d9cc3e 100644
--- a/lib/AST/ItaniumMangle.cpp
+++ b/lib/AST/ItaniumMangle.cpp
@@ -818,28 +818,21 @@
     case Type::Decltype:
     case Type::TemplateTypeParm:
     case Type::UnaryTransform:
+    case Type::SubstTemplateTypeParm:
     unresolvedType:
       assert(!qualifier->getPrefix());
 
       // We only get here recursively if we're followed by identifiers.
       if (recursive) Out << 'N';
 
-      // This seems to do everything we want.
+      // This seems to do everything we want.  It's not really
+      // sanctioned for a substituted template parameter, though.
       mangleType(QualType(type, 0));
 
       // We never want to print 'E' directly after an unresolved-type,
       // so we return directly.
       return;
 
-    // Substituted template type parameters should only come up with
-    // enclosing templates.
-    // <unresolved-type> ::= <existing-substitution> [ <template-args> ]
-    case Type::SubstTemplateTypeParm: {
-      if (recursive) Out << 'N';
-      mangleExistingSubstitution(QualType(type, 0));
-      return;
-    }
-
     case Type::Typedef:
       mangleSourceName(cast<TypedefType>(type)->getDecl()->getIdentifier());
       break;