diff options
| author | Timur Iskhodzhanov <timurrrr@google.com> | 2013-08-26 10:32:04 +0000 |
|---|---|---|
| committer | Timur Iskhodzhanov <timurrrr@google.com> | 2013-08-26 10:32:04 +0000 |
| commit | f46993e40aaeaf22078f711862443722f72ba87f (patch) | |
| tree | c252936da328ae4ee20de99bec4a75d8162db8fa /clang | |
| parent | 8277c1874a6f2383a7f9122fafa542770cce33da (diff) | |
| download | bcm5719-llvm-f46993e40aaeaf22078f711862443722f72ba87f.tar.gz bcm5719-llvm-f46993e40aaeaf22078f711862443722f72ba87f.zip | |
Fix virtual destructor mangling when using "-cxx-abi microsoft" on x64
llvm-svn: 189214
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/AST/MicrosoftMangle.cpp | 2 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/microsoft-abi-structors.cpp | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index d9e18eb067f..cb93f070ffb 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/lib/AST/MicrosoftMangle.cpp @@ -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 << '@'; diff --git a/clang/test/CodeGenCXX/microsoft-abi-structors.cpp b/clang/test/CodeGenCXX/microsoft-abi-structors.cpp index 95752752f37..10308353b48 100644 --- a/clang/test/CodeGenCXX/microsoft-abi-structors.cpp +++ b/clang/test/CodeGenCXX/microsoft-abi-structors.cpp @@ -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(); }; |

