aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimur Iskhodzhanov <timurrrr@google.com>2012-11-26 08:55:48 +0000
committerTimur Iskhodzhanov <timurrrr@google.com>2012-11-26 08:55:48 +0000
commit79b7cc59658ca477cd943561d2d30cdfe9e09a5a (patch)
treeb8c28a5d4d4f22b6de05db40d2e1e9880b229bc5
parent73ed67cc36b06a380ddc3658beb7a84328c19ff6 (diff)
Fix PR14413 - incorrect mangling of anonymous namespaces with -cxx-abi microsoft
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168583 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/AST/MicrosoftMangle.cpp2
-rw-r--r--test/CodeGenCXX/mangle-ms.cpp11
2 files changed, 10 insertions, 3 deletions
diff --git a/lib/AST/MicrosoftMangle.cpp b/lib/AST/MicrosoftMangle.cpp
index 7a12c4da95..d91f512538 100644
--- a/lib/AST/MicrosoftMangle.cpp
+++ b/lib/AST/MicrosoftMangle.cpp
@@ -453,7 +453,7 @@ MicrosoftCXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND,
if (const NamespaceDecl *NS = dyn_cast<NamespaceDecl>(ND)) {
if (NS->isAnonymousNamespace()) {
- Out << "?A";
+ Out << "?A@";
break;
}
}
diff --git a/test/CodeGenCXX/mangle-ms.cpp b/test/CodeGenCXX/mangle-ms.cpp
index 0edb4b4339..6441d67a75 100644
--- a/test/CodeGenCXX/mangle-ms.cpp
+++ b/test/CodeGenCXX/mangle-ms.cpp
@@ -3,6 +3,7 @@
// CHECK: @"\01?a@@3HA"
// CHECK: @"\01?b@N@@3HA"
+// CHECK: @"\01?anonymous@?A@N@@3HA"
// CHECK: @c
// CHECK: @"\01?d@foo@@0FB"
// CHECK: @"\01?e@foo@@1JC"
@@ -24,10 +25,16 @@
int a;
-namespace N { int b; }
+namespace N {
+ int b;
+
+ namespace {
+ int anonymous;
+ }
+}
static int c;
-int _c(void) {return c;}
+int _c(void) {return N::anonymous + c;}
// CHECK: @"\01?_c@@YAHXZ"
class foo {