]> granicus.if.org Git - clang/commitdiff
MS ABI: Update alias template mangling for VC "14" CTP 3
authorDavid Majnemer <david.majnemer@gmail.com>
Tue, 19 Aug 2014 07:29:03 +0000 (07:29 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Tue, 19 Aug 2014 07:29:03 +0000 (07:29 +0000)
MSVC "14" CTP 3 has fixed it's mangling for alias templates when used as
template-template arguments; update clang to be compatible with this
mangling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215972 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/MicrosoftMangle.cpp
test/CodeGenCXX/mangle-ms-cxx11.cpp

index 7a159f42968db60a3246d4b099e2edb6e219a6de..ddb4963515392728e997cd4fa663b59279cad9e3 100644 (file)
@@ -1195,9 +1195,8 @@ void MicrosoftCXXNameMangler::mangleTemplateArg(const TemplateDecl *TD,
     if (const auto *TD = dyn_cast<TagDecl>(ND)) {
       mangleType(TD);
     } else if (isa<TypeAliasDecl>(ND)) {
-      // FIXME: The mangling, while compatible with VS "14", is horribly
-      // broken.  Update this when they release their next compiler.
-      Out << '$';
+      Out << "$$Y";
+      mangleName(ND);
     } else {
       llvm_unreachable("unexpected template template NamedDecl!");
     }
index ff1692d01951feb156ee83e5a474ae5f1b2c9875..ded08b9ff169d0bf9b70b017e9780abc08205687 100644 (file)
@@ -231,5 +231,5 @@ template <template <typename> class>
 void f() {}
 
 template void f<AliasA>();
-// CHECK-DAG: @"\01??$f@$@PR20047@@YAXXZ"
+// CHECK-DAG: @"\01??$f@$$YAliasA@PR20047@@@PR20047@@YAXXZ"
 }