From 952eddef9aff85b1e92626e89baaf7a360e2ac85 Mon Sep 17 00:00:00 2001 From: dim Date: Sun, 22 Dec 2013 00:07:40 +0000 Subject: Vendor import of clang release_34 branch r197841 (effectively, 3.4 RC3): https://llvm.org/svn/llvm-project/cfe/branches/release_34@197841 --- test/CodeGenCXX/mangle-windows.cpp | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 test/CodeGenCXX/mangle-windows.cpp (limited to 'test/CodeGenCXX/mangle-windows.cpp') diff --git a/test/CodeGenCXX/mangle-windows.cpp b/test/CodeGenCXX/mangle-windows.cpp new file mode 100644 index 0000000..c087616 --- /dev/null +++ b/test/CodeGenCXX/mangle-windows.cpp @@ -0,0 +1,42 @@ +// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft \ +// RUN: -triple=i386-pc-win32 | FileCheck --check-prefix=WIN %s +// +// RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-mingw32 | \ +// RUN: FileCheck --check-prefix=ITANIUM %s + +void __stdcall f1(void) {} +// WIN: define x86_stdcallcc void @"\01?f1@@YGXXZ" +// ITANIUM: define x86_stdcallcc void @"\01__Z2f1v@0" + +void __fastcall f2(void) {} +// WIN: define x86_fastcallcc void @"\01?f2@@YIXXZ" +// ITANIUM: define x86_fastcallcc void @"\01@_Z2f2v@0" + +extern "C" void __stdcall f3(void) {} +// WIN: define x86_stdcallcc void @"\01_f3@0" +// ITANIUM: define x86_stdcallcc void @"\01_f3@0" + +extern "C" void __fastcall f4(void) {} +// WIN: define x86_fastcallcc void @"\01@f4@0" +// ITANIUM: define x86_fastcallcc void @"\01@f4@0" + +struct Foo { + void __stdcall foo(); + static void __stdcall bar(); +}; + +void Foo::foo() {} +// WIN: define x86_stdcallcc void @"\01?foo@Foo@@QAGXXZ" +// ITANIUM: define x86_stdcallcc void @"\01__ZN3Foo3fooEv@4" + +void Foo::bar() {} +// WIN: define x86_stdcallcc void @"\01?bar@Foo@@SGXXZ" +// ITANIUM: define x86_stdcallcc void @"\01__ZN3Foo3barEv@0" + +// Mostly a test that we don't crash and that the names start with a \01. +// gcc on mingw produces __Zpp@4 +// cl produces _++@4 +extern "C" void __stdcall operator++(Foo &x) { +} +// WIN: define x86_stdcallcc void @"\01??E@YGXAAUFoo@@@Z" +// ITANIUM: define x86_stdcallcc void @"\01__ZppR3Foo@4" -- cgit v1.1