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 | 5610db69237d4b7b5a204e0761a6bd3255928f9f (patch) | |
tree | 4b8092cf70567f78c587636d2167b25ee2e09c8d /clang/lib/CodeGen/Mangle.cpp | |
parent | af197502d6f94a962367913b9247dd8afe57f3e0 (diff) | |
download | bcm5719-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.cpp | 10 |
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()); |