diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-02-28 21:40:32 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-02-28 21:40:32 +0000 |
commit | 5ed1bc351f36ca1086d7836baee546c39ce90dd7 (patch) | |
tree | 43b82805f3679de1d929a794c997836e0d9784c6 /lib/CodeGen/Mangle.cpp | |
parent | f14e14f38ba3822f449eb5ed530d59a61e30f2cf (diff) |
Add name mangling for DeclRefExprs that refer to external names
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97418 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/Mangle.cpp')
-rw-r--r-- | lib/CodeGen/Mangle.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp index 22dbd91259..55185cb92d 100644 --- a/lib/CodeGen/Mangle.cpp +++ b/lib/CodeGen/Mangle.cpp @@ -1346,10 +1346,16 @@ void CXXNameMangler::mangleExpression(const Expr *E) { break; case Expr::DeclRefExprClass: { - const Decl *D = cast<DeclRefExpr>(E)->getDecl(); + const NamedDecl *D = cast<DeclRefExpr>(E)->getDecl(); switch (D->getKind()) { - default: assert(false && "Unhandled decl kind!"); + default: + // <expr-primary> ::= L <mangled-name> E # external name + Out << 'L'; + mangle(D, "_Z"); + Out << 'E'; + break; + case Decl::NonTypeTemplateParm: { const NonTypeTemplateParmDecl *PD = cast<NonTypeTemplateParmDecl>(D); mangleTemplateParameter(PD->getIndex()); |