Fix PR14413 - incorrect mangling of anonymous namespaces with -cxx-abi microsoft
authorTimur Iskhodzhanov <timurrrr@google.com>
Mon, 26 Nov 2012 08:55:48 +0000 (08:55 +0000)
committerTimur Iskhodzhanov <timurrrr@google.com>
Mon, 26 Nov 2012 08:55:48 +0000 (08:55 +0000)
llvm-svn: 168583

clang/lib/AST/MicrosoftMangle.cpp
clang/test/CodeGenCXX/mangle-ms.cpp

index 7a12c4d..d91f512 100644 (file)
@@ -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;
         }
       }
index 0edb4b4..6441d67 100644 (file)
@@ -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"
 
 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 {