50 lines · cpp
1// RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-pc-win32 | \2// RUN: FileCheck --check-prefix=WIN %s3//4// RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-mingw32 | \5// RUN: FileCheck --check-prefix=ITANIUM %s6 7// RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-cygwin | \8// RUN: FileCheck --check-prefix=ITANIUM %s9 10void __stdcall f1(void) {}11// WIN: define dso_local x86_stdcallcc void @"?f1@@YGXXZ"12// ITANIUM: define dso_local x86_stdcallcc void @"\01__Z2f1v@0"13 14void __fastcall f2(void) {}15// WIN: define dso_local x86_fastcallcc void @"?f2@@YIXXZ"16// ITANIUM: define dso_local x86_fastcallcc void @"\01@_Z2f2v@0"17 18extern "C" void __stdcall f3(void) {}19// WIN: define dso_local x86_stdcallcc void @"\01_f3@0"20// ITANIUM: define dso_local x86_stdcallcc void @"\01_f3@0"21 22extern "C" void __fastcall f4(void) {}23// WIN: define dso_local x86_fastcallcc void @"\01@f4@0"24// ITANIUM: define dso_local x86_fastcallcc void @"\01@f4@0"25 26void __pascal f5(void) {}27// WIN: define dso_local void @"?f5@@YCXXZ"28// ITANIUM: define dso_local void @_Z2f5v29 30struct Foo {31 void __stdcall foo();32 static void __stdcall bar();33};34 35void Foo::foo() {}36// WIN: define dso_local x86_stdcallcc void @"?foo@Foo@@QAGXXZ"37// ITANIUM: define dso_local x86_stdcallcc void @"\01__ZN3Foo3fooEv@4"38 39void Foo::bar() {}40// WIN: define dso_local x86_stdcallcc void @"?bar@Foo@@SGXXZ"41// ITANIUM: define dso_local x86_stdcallcc void @"\01__ZN3Foo3barEv@0"42 43// Mostly a test that we don't crash and that the names start with a \01.44// gcc on mingw produces __Zpp@445// cl produces _++@446extern "C" void __stdcall operator++(Foo &x) {47}48// WIN: define dso_local x86_stdcallcc void @"??E@YGXAAUFoo@@@Z"49// ITANIUM: define dso_local x86_stdcallcc void @"\01__ZppR3Foo@4"50