From 2de1c33f77d7fe8ac9d5476dd77efd65f5c9e90f Mon Sep 17 00:00:00 2001 From: John McCall Date: Fri, 1 Jul 2011 02:19:08 +0000 Subject: 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. llvm-svn: 134227 --- clang/lib/AST/ItaniumMangle.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) (limited to 'clang/lib/AST') diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index 205e887fea4..9d9cc3ed4f9 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -818,28 +818,21 @@ void CXXNameMangler::mangleUnresolvedPrefix(NestedNameSpecifier *qualifier, 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. - // ::= [ ] - case Type::SubstTemplateTypeParm: { - if (recursive) Out << 'N'; - mangleExistingSubstitution(QualType(type, 0)); - return; - } - case Type::Typedef: mangleSourceName(cast(type)->getDecl()->getIdentifier()); break; -- cgit v1.2.3