1 // RUN: %clang_cc1 -emit-llvm < %s | FileCheck %s 2 3 void __attribute__((fastcall)) f1(void); 4 void __attribute__((stdcall)) f2(void); 5 void __attribute__((thiscall)) f3(void); 6 void __attribute__((fastcall)) f4(void) { 7 // CHECK: define x86_fastcallcc void @f4() 8 f1(); 9 // CHECK: call x86_fastcallcc void @f1() 10 } 11 void __attribute__((stdcall)) f5(void) { 12 // CHECK: define x86_stdcallcc void @f5() 13 f2(); 14 // CHECK: call x86_stdcallcc void @f2() 15 } 16 void __attribute__((thiscall)) f6(void) { 17 // CHECK: define x86_thiscallcc void @f6() 18 f3(); 19 // CHECK: call x86_thiscallcc void @f3() 20 } 21 22 // PR5280 23 void (__attribute__((fastcall)) *pf1)(void) = f1; 24 void (__attribute__((stdcall)) *pf2)(void) = f2; 25 void (__attribute__((thiscall)) *pf3)(void) = f3; 26 void (__attribute__((fastcall)) *pf4)(void) = f4; 27 void (__attribute__((stdcall)) *pf5)(void) = f5; 28 void (__attribute__((thiscall)) *pf6)(void) = f6; 29 30 int main(void) { 31 f4(); f5(); f6(); 32 // CHECK: call x86_fastcallcc void @f4() 33 // CHECK: call x86_stdcallcc void @f5() 34 // CHECK: call x86_thiscallcc void @f6() 35 pf1(); pf2(); pf3(); pf4(); pf5(); pf6(); 36 // CHECK: call x86_fastcallcc void %{{.*}}() 37 // CHECK: call x86_stdcallcc void %{{.*}}() 38 // CHECK: call x86_thiscallcc void %{{.*}}() 39 // CHECK: call x86_fastcallcc void %{{.*}}() 40 // CHECK: call x86_stdcallcc void %{{.*}}() 41 // CHECK: call x86_thiscallcc void %{{.*}}() 42 return 0; 43 } 44 45 // PR7117 46 void __attribute((stdcall)) f7(foo) int foo; {} 47 void f8(void) { 48 f7(0); 49 // CHECK: call x86_stdcallcc void (...)* bitcast 50 } 51