diff options
| author | Douglas Gregor <dgregor@apple.com> | 2011-01-03 22:36:02 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2011-01-03 22:36:02 +0000 |
| commit | 752a595655d3dfcdbffb44b4d6a94275c550e7fe (patch) | |
| tree | 8e1d4f1312ffa2fa438266a66a7b747cc6631ac8 /clang/lib/CodeGen | |
| parent | d5756a609dbb14dff99cd83a0a50042da5275233 (diff) | |
| download | bcm5719-llvm-752a595655d3dfcdbffb44b4d6a94275c550e7fe.tar.gz bcm5719-llvm-752a595655d3dfcdbffb44b4d6a94275c550e7fe.zip | |
Implement pack expansions whose pattern is a base-specifier.
llvm-svn: 122782
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/Mangle.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp index 0aa9f402f96..834ef4e5693 100644 --- a/clang/lib/CodeGen/Mangle.cpp +++ b/clang/lib/CodeGen/Mangle.cpp @@ -2137,8 +2137,9 @@ void CXXNameMangler::mangleTemplateArg(const NamedDecl *P, // ::= I <template-arg>* E # argument pack // ::= sp <expression> # pack expansion of (C++0x) switch (A.getKind()) { - default: - assert(0 && "Unknown template argument kind!"); + case TemplateArgument::Null: + llvm_unreachable("Cannot mangle NULL template argument"); + case TemplateArgument::Type: mangleType(A.getAsType()); break; @@ -2187,6 +2188,16 @@ void CXXNameMangler::mangleTemplateArg(const NamedDecl *P, break; } + + case TemplateArgument::Pack: { + // Note: proposal by Mike Herrick on 12/20/10 + Out << 'J'; + for (TemplateArgument::pack_iterator PA = A.pack_begin(), + PAEnd = A.pack_end(); + PA != PAEnd; ++PA) + mangleTemplateArg(P, *PA); + Out << 'E'; + } } } |

