summaryrefslogtreecommitdiffstats
path: root/clang/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
commit5610db69237d4b7b5a204e0761a6bd3255928f9f (patch)
tree4b8092cf70567f78c587636d2167b25ee2e09c8d /clang/lib/CodeGen/Mangle.cpp
parentaf197502d6f94a962367913b9247dd8afe57f3e0 (diff)
downloadbcm5719-llvm-5610db69237d4b7b5a204e0761a6bd3255928f9f.tar.gz
bcm5719-llvm-5610db69237d4b7b5a204e0761a6bd3255928f9f.zip
Add name mangling for DeclRefExprs that refer to external names
llvm-svn: 97418
Diffstat (limited to 'clang/lib/CodeGen/Mangle.cpp')
-rw-r--r--clang/lib/CodeGen/Mangle.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp
index 22dbd91259c..55185cb92d0 100644
--- a/clang/lib/CodeGen/Mangle.cpp
+++ b/clang/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());
OpenPOWER on IntegriCloud