aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/Mangle.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-09-27 01:06:07 +0000
committerAnders Carlsson <andersca@mac.com>2009-09-27 01:06:07 +0000
commit88599176d106453935a8fa984f690362cc48b470 (patch)
tree615e3d48f9afb11f04fe819f19b229ab02a5f889 /lib/CodeGen/Mangle.cpp
parent0ccdf8d62cba2ad730001f133b6cc4836c42da83 (diff)
Look for substitutions when mangling TypenameTypes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82885 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/Mangle.cpp')
-rw-r--r--lib/CodeGen/Mangle.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp
index 447255c668..660a36bce0 100644
--- a/lib/CodeGen/Mangle.cpp
+++ b/lib/CodeGen/Mangle.cpp
@@ -920,10 +920,13 @@ void CXXNameMangler::mangleType(const TypenameType *T) {
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