69 lines · c
1// RUN: %clang_cc1 -triple i386-pc-linux -Wno-strict-prototypes -emit-llvm < %s | FileCheck %s2// RUN: %clang_cc1 -triple i386-pc-linux -Wno-strict-prototypes -emit-llvm -mrtd < %s | FileCheck %s3// RUN: %clang_cc1 -triple i386-pc-linux -Wno-strict-prototypes -emit-llvm -fms-compatibility < %s | FileCheck %s4 5void __fastcall f1(void);6void __stdcall f2(void);7void __thiscall f3(void);8void __fastcall f4(void) {9// CHECK-LABEL: define{{.*}} x86_fastcallcc void @f4()10 f1();11// CHECK: call x86_fastcallcc void @f1()12}13void __stdcall f5(void) {14// CHECK-LABEL: define{{.*}} x86_stdcallcc void @f5()15 f2();16// CHECK: call x86_stdcallcc void @f2()17}18void __thiscall f6(void) {19// CHECK-LABEL: define{{.*}} x86_thiscallcc void @f6()20 f3();21// CHECK: call x86_thiscallcc void @f3()22}23void __vectorcall f61(void) {24// CHECK-LABEL: define{{.*}} x86_vectorcallcc void @f61()25 f3();26// CHECK: call x86_thiscallcc void @f3()27}28 29// PR528030void (__fastcall *pf1)(void) = f1;31void (__stdcall *pf2)(void) = f2;32void (__thiscall *pf3)(void) = f3;33void (__fastcall *pf4)(void) = f4;34void (__stdcall *pf5)(void) = f5;35void (__thiscall *pf6)(void) = f6;36void (__vectorcall *pf7)(void) = f61;37 38int main(void) {39 f4(); f5(); f6(); f61();40 // CHECK: call x86_fastcallcc void @f4()41 // CHECK: call x86_stdcallcc void @f5()42 // CHECK: call x86_thiscallcc void @f6()43 // CHECK: call x86_vectorcallcc void @f61()44 pf1(); pf2(); pf3(); pf4(); pf5(); pf6(); pf7();45 // CHECK: call x86_fastcallcc void %{{.*}}()46 // CHECK: call x86_stdcallcc void %{{.*}}()47 // CHECK: call x86_thiscallcc void %{{.*}}()48 // CHECK: call x86_fastcallcc void %{{.*}}()49 // CHECK: call x86_stdcallcc void %{{.*}}()50 // CHECK: call x86_thiscallcc void %{{.*}}()51 // CHECK: call x86_vectorcallcc void %{{.*}}()52 return 0;53}54 55// PR711756void __stdcall f7(foo) int foo; {}57void f8(void) {58 f7(0);59 // CHECK: call x86_stdcallcc void @f7(i32 noundef 0)60}61 62// PR1253563void __fastcall f9(int x, int y) {};64// CHECK: define{{.*}} x86_fastcallcc void @f9({{.*}})65void __fastcall f10(int x, ...) {};66// CHECK: define{{.*}} void @f10({{.*}})67void __stdcall f11(int x, ...) {};68// CHECK: define{{.*}} void @f11({{.*}})69