154db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman// RUN: %clang_cc1 -triple x86_64-pc-win32 -emit-llvm < %s | FileCheck %s 254db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman 354db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid __fastcall f1(void); 454db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid __stdcall f2(void); 554db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid __fastcall f4(void) { 693ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @f4() 754db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman f1(); 854db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman// CHECK: call void @f1() 954db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman} 1054db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid __stdcall f5(void) { 1193ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @f5() 1254db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman f2(); 1354db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman// CHECK: call void @f2() 1454db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman} 1554db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman 1654db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman// PR5280 1754db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid (__fastcall *pf1)(void) = f1; 1854db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid (__stdcall *pf2)(void) = f2; 1954db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid (__fastcall *pf4)(void) = f4; 2054db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid (__stdcall *pf5)(void) = f5; 2154db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman 2254db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanint main(void) { 2354db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman f4(); f5(); 2454db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman // CHECK: call void @f4() 2554db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman // CHECK: call void @f5() 2654db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman pf1(); pf2(); pf4(); pf5(); 2754db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman // CHECK: call void %{{.*}}() 2854db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman // CHECK: call void %{{.*}}() 2954db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman // CHECK: call void %{{.*}}() 3054db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman // CHECK: call void %{{.*}}() 3154db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman return 0; 3254db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman} 3354db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman 3454db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman// PR7117 3554db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid __stdcall f7(foo) int foo; {} 3654db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballmanvoid f8(void) { 3754db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman f7(0); 3854db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman // CHECK: call void @f7(i32 0) 3954db3244f425dae51cde7c6298ec42d0764f8ed8Aaron Ballman} 40