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