r189214 - Fix virtual destructor mangling when using "-cxx-abi microsoft" on x64

Timur Iskhodzhanov timurrrr at google.com
Mon Aug 26 03:32:04 PDT 2013


Author: timurrrr
Date: Mon Aug 26 05:32:04 2013
New Revision: 189214

URL: http://llvm.org/viewvc/llvm-project?rev=189214&view=rev
Log:
Fix virtual destructor mangling when using "-cxx-abi microsoft" on x64

Modified:
    cfe/trunk/lib/AST/MicrosoftMangle.cpp
    cfe/trunk/test/CodeGenCXX/microsoft-abi-structors.cpp

Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=189214&r1=189213&r2=189214&view=diff
==============================================================================
--- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original)
+++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Mon Aug 26 05:32:04 2013
@@ -1294,7 +1294,7 @@ void MicrosoftCXXNameMangler::mangleFunc
       // However, the FunctionType generated has 0 arguments.
       // FIXME: This is a temporary hack.
       // Maybe should fix the FunctionType creation instead?
-      Out << "PAXI at Z";
+      Out << (PointersAre64Bit ? "PEAXI at Z" : "PAXI at Z");
       return;
     }
     Out << '@';

Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-structors.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-structors.cpp?rev=189214&r1=189213&r2=189214&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/microsoft-abi-structors.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/microsoft-abi-structors.cpp Mon Aug 26 05:32:04 2013
@@ -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 at basic@@UEAAPEAXI at Z"
   }
   virtual void foo();
 };





More information about the cfe-commits mailing list