]> granicus.if.org Git - clang/commitdiff
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)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168583 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 7a12c4da9516c4608a07ab94da75232271b5dd60..d91f5125387e2db83f1e9630b1afca4928edf2e3 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 0edb4b4339aa68903ecb9591149c8da4dd825f5c..6441d67a758a095aeebe84974d3bb9e67c842667 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 {