xref: /minix3/external/bsd/llvm/dist/clang/test/Sema/decl-microsoft-call-conv.c (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -triple i686-pc-win32 -verify %s
2*0a6a1f1dSLionel Sambuc 
3*0a6a1f1dSLionel Sambuc // It's important that this is a .c file.
4*0a6a1f1dSLionel Sambuc 
5*0a6a1f1dSLionel Sambuc // This is fine, as CrcGenerateTable*() has a prototype.
6*0a6a1f1dSLionel Sambuc void __fastcall CrcGenerateTableFastcall(void);
7*0a6a1f1dSLionel Sambuc void __fastcall CrcGenerateTableFastcall();
CrcGenerateTableFastcall()8*0a6a1f1dSLionel Sambuc void __fastcall CrcGenerateTableFastcall() {}
9*0a6a1f1dSLionel Sambuc void __stdcall CrcGenerateTableStdcall(void);
10*0a6a1f1dSLionel Sambuc void __stdcall CrcGenerateTableStdcall();
CrcGenerateTableStdcall()11*0a6a1f1dSLionel Sambuc void __stdcall CrcGenerateTableStdcall() {}
12*0a6a1f1dSLionel Sambuc void __thiscall CrcGenerateTableThiscall(void);
13*0a6a1f1dSLionel Sambuc void __thiscall CrcGenerateTableThiscall();
CrcGenerateTableThiscall()14*0a6a1f1dSLionel Sambuc void __thiscall CrcGenerateTableThiscall() {}
15*0a6a1f1dSLionel Sambuc void __pascal CrcGenerateTablePascal(void);
16*0a6a1f1dSLionel Sambuc void __pascal CrcGenerateTablePascal();
CrcGenerateTablePascal()17*0a6a1f1dSLionel Sambuc void __pascal CrcGenerateTablePascal() {}
18*0a6a1f1dSLionel Sambuc void __vectorcall CrcGenerateTableVectorcall(void);
19*0a6a1f1dSLionel Sambuc void __vectorcall CrcGenerateTableVectorcall();
CrcGenerateTableVectorcall()20*0a6a1f1dSLionel Sambuc void __vectorcall CrcGenerateTableVectorcall() {}
21*0a6a1f1dSLionel Sambuc 
22*0a6a1f1dSLionel Sambuc void __fastcall CrcGenerateTableNoProtoFastcall(); // expected-error{{function with no prototype cannot use the fastcall calling convention}}
23*0a6a1f1dSLionel Sambuc void __stdcall CrcGenerateTableNoProtoStdcall(); // expected-warning{{function with no prototype cannot use the stdcall calling convention}}
24*0a6a1f1dSLionel Sambuc void __thiscall CrcGenerateTableNoProtoThiscall(); // expected-error{{function with no prototype cannot use the thiscall calling convention}}
25*0a6a1f1dSLionel Sambuc void __pascal CrcGenerateTableNoProtoPascal(); // expected-error{{function with no prototype cannot use the pascal calling convention}}
26*0a6a1f1dSLionel Sambuc void __vectorcall CrcGenerateTableNoProtoVectorcall(); // expected-error{{function with no prototype cannot use the vectorcall calling convention}}
27*0a6a1f1dSLionel Sambuc 
CrcGenerateTableNoProtoDefFastcall()28*0a6a1f1dSLionel Sambuc void __fastcall CrcGenerateTableNoProtoDefFastcall() {}
CrcGenerateTableNoProtoDefStdcall()29*0a6a1f1dSLionel Sambuc void __stdcall CrcGenerateTableNoProtoDefStdcall() {}
CrcGenerateTableNoProtoDefThiscall()30*0a6a1f1dSLionel Sambuc void __thiscall CrcGenerateTableNoProtoDefThiscall() {}
CrcGenerateTableNoProtoDefPascal()31*0a6a1f1dSLionel Sambuc void __pascal CrcGenerateTableNoProtoDefPascal() {}
CrcGenerateTableNoProtoDefVectorcall()32*0a6a1f1dSLionel Sambuc void __vectorcall CrcGenerateTableNoProtoDefVectorcall() {}
33*0a6a1f1dSLionel Sambuc 
34*0a6a1f1dSLionel Sambuc // Regular calling convention is fine.
CrcGenerateTableNoProto()35*0a6a1f1dSLionel Sambuc void CrcGenerateTableNoProto() {}
36