]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/wtr-func-def-1.c
Update copyright years.
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / wtr-func-def-1.c
1 /* Test for -Wtraditional warnings on ISO C function definitions.
2 Note, gcc should omit these warnings in system header files.
3 Origin: Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 6/30/2002. */
4 /* { dg-do compile } */
5 /* { dg-options "-Wtraditional -std=gnu89" } */
6
7 /* Test some simple cases. */
8
9 void f_void1 (void) /* { dg-warning "traditional C rejects ISO C style" } */
10 {
11 return;
12 }
13
14 void f_void2 ()
15 {
16 return;
17 }
18
19 void f_int1 (int f) /* { dg-warning "traditional C rejects ISO C style" } */
20 {
21 return;
22 }
23
24 void f_int2 (f)
25 int f;
26 {
27 return;
28 }
29
30 /* Test that we don't ever warn about nested functions. */
31
32 void f_int3 (int f) /* { dg-warning "traditional C rejects ISO C style" } */
33 {
34 void f3a (void) { return; }
35 void f3b () { return; }
36 void f3c (int f) { return; }
37 void f3d (f) int f; { return; }
38 void f3e (const char *f, ...) { return; }
39 return;
40 }
41
42 void f_int4 (int f) /* { dg-warning "traditional C rejects ISO C style" } */
43 {
44 void f4a (void) { return; }
45 void f4b () { return; }
46 void f4c (int f) { return; }
47 void f4d (f) int f; { return; }
48 void f4e (const char *f, ...) { return; }
49 auto f4f (void) { return 0; }
50 return;
51 }
52
53 void f_int5 (f)
54 int f;
55 {
56 void f5a (void) { return; }
57 void f5b () { return; }
58 void f5c (int f) { return; }
59 void f5d (f) int f; { return; }
60 void f5e (const char *f, ...) { return; }
61 return;
62 }
63
64 void f_int6 (f)
65 int f;
66 {
67 void f6a (void) { return; }
68 void f6b () { return; }
69 void f6c (int f) { return; }
70 void f6d (f) int f; { return; }
71 void f6e (const char *f, ...) { return; }
72 auto f6f (void) { return 0; }
73 return;
74 }
75
76 /* Test that prototypes are silently accepted and function definitions
77 are still warned about. */
78
79 extern void f_int_p1 (int);
80 void f_int_p1 (int f) /* { dg-warning "traditional C rejects ISO C style" } */
81 {
82 return;
83 }
84
85 extern void f_int_p2 (int f);
86 void f_int_p2 (int f) /* { dg-warning "traditional C rejects ISO C style" } */
87 {
88 return;
89 }
90
91 extern void f_int_p3 (int);
92 void f_int_p3 (f)
93 int f;
94 {
95 return;
96 }
97
98 extern void f_int_p4 (int f);
99 void f_int_p4 (f)
100 int f;
101 {
102 return;
103 }
104
105 extern void f_void_p1 ();
106 void f_void_p1 (void) /* { dg-warning "traditional C rejects ISO C style" } */
107 {
108 return;
109 }
110
111 extern void f_void_p2 (void);
112 void f_void_p2 (void) /* { dg-warning "traditional C rejects ISO C style" } */
113 {
114 return;
115 }
116
117 extern void f_blank_p1 ();
118 void f_blank_p1 ()
119 {
120 return;
121 }
122
123 extern void f_blank_p2 (void);
124 void f_blank_p2 ()
125 {
126 return;
127 }
128
129 /* Test some implicit int functions. */
130
131 f_impl1()
132 {
133 return 0;
134 }
135
136 f_impl2(void) /* { dg-warning "traditional C rejects ISO C style" } */
137 {
138 return 0;
139 }
140
141 f_impl3(int f) /* { dg-warning "traditional C rejects ISO C style" } */
142 {
143 return 0;
144 }
145
146 /* Test stdarg functions. */
147
148 f_stdarg1(const char *s, ...) /* { dg-warning "traditional C rejects ISO C style" } */
149 {
150 return 0;
151 }
152
153 void f_stdarg2(const char *s, ...) /* { dg-warning "traditional C rejects ISO C style" } */
154 {
155 return;
156 }
157
158 extern void f_stdarg3(const char *, ...);
159 void f_stdarg3(const char *s, ...) /* { dg-warning "traditional C rejects ISO C style" } */
160 {
161 return;
162 }
163
164 /* Test handling function pointer parameters. */
165
166 void f_fnptr1 (int f, int (*fp)(int));
167 void f_fnptr1 (int f, int (*fp)(int)) /* { dg-warning "traditional C rejects ISO C style" } */
168 {
169 return;
170 }
171
172 void f_fnptr2 (int f, int (*fp)(int));
173 void f_fnptr2 (f, fp)
174 int f;
175 int (*fp)(int);
176 {
177 return;
178 }
179
180 /* Test for main. */
181
182 int
183 main (int argc, char **argv) /* { dg-warning "traditional C rejects ISO C style" } */
184 {
185 return 0;
186 }
187
188 # 182 "sys-header.h" 3
189 /* We are in system headers now, no -Wtraditional warnings should issue. */
190
191 void fsys1 (void)
192 {
193 return;
194 }
195
196 void fsys2 (int f)
197 {
198 return;
199 }
200
201 void fsys3 (const char *f, ...)
202 {
203 return;
204 }