]> granicus.if.org Git - clang/commitdiff
Fix virtual destructor mangling when using "-cxx-abi microsoft" on x64
authorTimur Iskhodzhanov <timurrrr@google.com>
Mon, 26 Aug 2013 10:32:04 +0000 (10:32 +0000)
committerTimur Iskhodzhanov <timurrrr@google.com>
Mon, 26 Aug 2013 10:32:04 +0000 (10:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189214 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/MicrosoftMangle.cpp
test/CodeGenCXX/microsoft-abi-structors.cpp

index d9e18eb067faf64c2b1c63d258ab9626cfc16573..cb93f070ffb66458e257ee61316c36581c93fdc0 100644 (file)
@@ -1294,7 +1294,7 @@ void MicrosoftCXXNameMangler::mangleFunctionType(const FunctionType *T,
       // However, the FunctionType generated has 0 arguments.
       // FIXME: This is a temporary hack.
       // Maybe should fix the FunctionType creation instead?
-      Out << "PAXI@Z";
+      Out << (PointersAre64Bit ? "PEAXI@Z" : "PAXI@Z");
       return;
     }
     Out << '@';
index 95752752f376b8beefed3cb3de3bb07006c60b3c..10308353b4886c50dd80dfcc8f7472970644b4e2 100644 (file)
@@ -3,6 +3,8 @@
 // vftables are emitted very late, so do another pass to try to keep the checks
 // in source order.
 // RUN: FileCheck --check-prefix DTORS %s < %t
+//
+// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=x86_64-pc-win32 -fno-rtti | FileCheck --check-prefix DTORS-X64 %s
 
 namespace basic {
 
@@ -57,6 +59,9 @@ struct C {
 //
 // DTORS:      [[CONTINUE_LABEL]]
 // DTORS-NEXT:   ret void
+
+// Check that we do the mangling correctly on x64.
+// DTORS-X64:  @"\01??_GC@basic@@UEAAPEAXI@Z"
   }
   virtual void foo();
 };