1 // RUN: %clang_cc1 -triple i386-pc-unknown -Wconversion -Wliteral-conversion -fsyntax-only -verify %s
4 void f0(a
, b
, c
, d
) int a
,b
,c
,d
; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}}
6 f0(1); // expected-warning{{too few arguments}}
9 void f1(a
, b
) int a
, b
; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}}
11 f1(1, 2, 3); // expected-warning{{too many arguments}}
14 void f2(float); // expected-note{{previous declaration is here}}
15 void f2(x
) float x
; { } // expected-warning{{promoted type 'double' of K&R function parameter is not compatible with the parameter type 'float' declared in a previous prototype}} \
16 expected
-warning
{{a function definition without a prototype is deprecated in all versions of C
and is
not supported in C2x
}}
18 typedef void (*f3
)(void);
19 f3
t3(int b
) { return b
? f0
: f1
; } // okay
21 // <rdar://problem/8193107>
26 // FIXME: we should diagnose this case, but when merging function declarations,
27 // we don't diagnose it because the function is a builtin.
29 register char *s
, c
; // expected-warning{{promoted type 'char *' of K&R function parameter is not compatible with the parameter type 'const char *' declared in a previous prototype}}
36 void proto(x
) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}}
42 proto(42.1); // expected-warning{{implicit conversion from 'double' to 'int' changes value from 42.1 to 42}}
43 (&proto
)(42.1); // expected-warning{{implicit conversion from 'double' to 'int' changes value from 42.1 to 42}}
47 void func(short d
) __attribute__((cdecl)); // expected-note{{previous declaration is here}}
48 void __attribute__((cdecl)) func(d
) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}}
49 short d
; // expected-warning{{promoted type 'int' of K&R function parameter is not compatible with the parameter type 'short' declared in a previous prototype}}