Index: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td =================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td @@ -2235,10 +2235,10 @@ def warn_cconv_ignored : Warning< "calling convention %0 ignored for this target">, InGroup; def err_cconv_knr : Error< - "function with no prototype cannot use %0 calling convention">; + "function with no prototype cannot use the callee-cleanup %0 calling convention">; def warn_cconv_knr : Warning< - "function with no prototype cannot use %0 calling convention">, - DefaultError, InGroup>; + "function with no prototype cannot use the callee-cleanup %0 calling convention">, + InGroup>; def err_cconv_varargs : Error< "variadic function cannot use %0 calling convention">; def warn_cconv_varargs : Warning< Index: cfe/trunk/test/CodeGen/mrtd.c =================================================================== --- cfe/trunk/test/CodeGen/mrtd.c +++ cfe/trunk/test/CodeGen/mrtd.c @@ -3,7 +3,7 @@ // prototype-less __stdcall functions are only allowed in system headers. # 1 "fake_system_header.h" 1 3 4 -// CHECK: fake_system_header.h:9:3: warning: function with no prototype cannot use stdcall calling convention +// CHECK: fake_system_header.h:9:3: warning: function with no prototype cannot use the callee-cleanup stdcall calling convention void baz(int arg); Index: cfe/trunk/test/Sema/callingconv.c =================================================================== --- cfe/trunk/test/Sema/callingconv.c +++ cfe/trunk/test/Sema/callingconv.c @@ -10,7 +10,7 @@ void __attribute__((fastcall(1))) baz(float *a) { // expected-error {{'fastcall' attribute takes no arguments}} } -void __attribute__((fastcall)) test0() { // expected-error {{function with no prototype cannot use fastcall calling convention}} +void __attribute__((fastcall)) test0() { // expected-error {{function with no prototype cannot use the callee-cleanup fastcall calling convention}} } void __attribute__((fastcall)) test1(void) { Index: cfe/trunk/test/Sema/decl-microsoft-call-conv.c =================================================================== --- cfe/trunk/test/Sema/decl-microsoft-call-conv.c +++ cfe/trunk/test/Sema/decl-microsoft-call-conv.c @@ -12,10 +12,10 @@ void __pascal CrcGenerateTablePascal(void); void __pascal CrcGenerateTablePascal() {} -void __fastcall CrcGenerateTableNoProtoFastcall() {} // expected-error{{function with no prototype cannot use fastcall calling convention}} -void __stdcall CrcGenerateTableNoProtoStdcall() {} // expected-error{{function with no prototype cannot use stdcall calling convention}} -void __thiscall CrcGenerateTableNoProtoThiscall() {} // expected-error{{function with no prototype cannot use thiscall calling convention}} -void __pascal CrcGenerateTableNoProtoPascal() {} // expected-error{{function with no prototype cannot use pascal calling convention}} +void __fastcall CrcGenerateTableNoProtoFastcall() {} // expected-error{{function with no prototype cannot use the callee-cleanup fastcall calling convention}} +void __stdcall CrcGenerateTableNoProtoStdcall() {} // expected-warning{{function with no prototype cannot use the callee-cleanup stdcall calling convention}} +void __thiscall CrcGenerateTableNoProtoThiscall() {} // expected-error{{function with no prototype cannot use the callee-cleanup thiscall calling convention}} +void __pascal CrcGenerateTableNoProtoPascal() {} // expected-error{{function with no prototype cannot use the callee-cleanup pascal calling convention}} // Regular calling convention is fine. void CrcGenerateTableNoProto() {} @@ -23,7 +23,7 @@ // In system headers, the stdcall version should be a warning. # 1 "fake_system_header.h" 1 3 4 -void __fastcall SystemHeaderFastcall() {} // expected-error{{function with no prototype cannot use fastcall calling convention}} +void __fastcall SystemHeaderFastcall() {} // expected-error{{function with no prototype cannot use the callee-cleanup fastcall calling convention}} void __stdcall SystemHeaderStdcall() {} -void __thiscall SystemHeaderThiscall() {} // expected-error{{function with no prototype cannot use thiscall calling convention}} -void __pascal SystemHeaderPascal() {} // expected-error{{function with no prototype cannot use pascal calling convention}} +void __thiscall SystemHeaderThiscall() {} // expected-error{{function with no prototype cannot use the callee-cleanup thiscall calling convention}} +void __pascal SystemHeaderPascal() {} // expected-error{{function with no prototype cannot use the callee-cleanup pascal calling convention}} Index: cfe/trunk/test/Sema/stdcall-fastcall.c =================================================================== --- cfe/trunk/test/Sema/stdcall-fastcall.c +++ cfe/trunk/test/Sema/stdcall-fastcall.c @@ -6,7 +6,7 @@ // Different CC qualifiers are not compatible void __attribute__((stdcall, fastcall)) foo3(void); // expected-error{{fastcall and stdcall attributes are not compatible}} -void __attribute__((stdcall)) foo4(); // expected-note{{previous declaration is here}} expected-error{{function with no prototype cannot use stdcall calling convention}} +void __attribute__((stdcall)) foo4(); // expected-note{{previous declaration is here}} expected-warning{{function with no prototype cannot use the callee-cleanup stdcall calling convention}} void __attribute__((fastcall)) foo4(void); // expected-error{{function declared 'fastcall' here was previously declared 'stdcall'}} // rdar://8876096