aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/Mangle.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-02-28 21:40:32 +0000
committerDouglas Gregor <dgregor@apple.com>2010-02-28 21:40:32 +0000
commit5ed1bc351f36ca1086d7836baee546c39ce90dd7 (patch)
tree43b82805f3679de1d929a794c997836e0d9784c6 /lib/CodeGen/Mangle.cpp
parentf14e14f38ba3822f449eb5ed530d59a61e30f2cf (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.cpp10
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());