// RUN: %clang_cc1 -triple i386-pc-linux -emit-llvm < %s | FileCheck %s
// RUN: %clang_cc1 -triple i386-pc-linux -emit-llvm -mrtd < %s | FileCheck %s
// RUN: %clang_cc1 -triple i386-pc-linux -emit-llvm -fms-compatibility < %s

void __fastcall f1(void);
void __stdcall f2(void);
void __thiscall f3(void);
void __fastcall f4(void) {
// CHECK-LABEL: define x86_fastcallcc void @f4()
  f1();
// CHECK: call x86_fastcallcc void @f1()
}
void __stdcall f5(void) {
// CHECK-LABEL: define x86_stdcallcc void @f5()
  f2();
// CHECK: call x86_stdcallcc void @f2()
}
void __thiscall f6(void) {
// CHECK-LABEL: define x86_thiscallcc void @f6()
  f3();
// CHECK: call x86_thiscallcc void @f3()
}
void __vectorcall f61(void) {
// CHECK-LABEL: define x86_vectorcallcc void @f61()
  f3();
// CHECK: call x86_thiscallcc void @f3()
}

// PR5280
void (__fastcall *pf1)(void) = f1;
void (__stdcall *pf2)(void) = f2;
void (__thiscall *pf3)(void) = f3;
void (__fastcall *pf4)(void) = f4;
void (__stdcall *pf5)(void) = f5;
void (__thiscall *pf6)(void) = f6;
void (__vectorcall *pf7)(void) = f61;

int main(void) {
    f4(); f5(); f6(); f61();
    // CHECK: call x86_fastcallcc void @f4()
    // CHECK: call x86_stdcallcc void @f5()
    // CHECK: call x86_thiscallcc void @f6()
    // CHECK: call x86_vectorcallcc void @f61()
    pf1(); pf2(); pf3(); pf4(); pf5(); pf6(); pf7();
    // CHECK: call x86_fastcallcc void %{{.*}}()
    // CHECK: call x86_stdcallcc void %{{.*}}()
    // CHECK: call x86_thiscallcc void %{{.*}}()
    // CHECK: call x86_fastcallcc void %{{.*}}()
    // CHECK: call x86_stdcallcc void %{{.*}}()
    // CHECK: call x86_thiscallcc void %{{.*}}()
    // CHECK: call x86_vectorcallcc void %{{.*}}()
    return 0;
}

// PR7117
void __stdcall f7(foo) int foo; {}
void f8(void) {
  f7(0);
  // CHECK: call x86_stdcallcc void @f7(i32 0)
}

// PR12535
void __fastcall f9(int x, int y) {};
// WIN: define x86_fastcallcc void @f9({{.*}})
void __fastcall f10(int x, ...) {};
// WIN: define void @f10({{.*}})
void __stdcall f11(int x, ...) {};
// WIN: define void @f11({{.*}})
