1 /* PR c/6940 */
2 /* { dg-do compile } */
3
4 /* Test -Wsizeof-array-argument warning. */
5
6 typedef int T[2][2];
7
8 int
9 fn1 (int a[])
10 {
11 return sizeof a; /* { dg-warning "on array function parameter" } */
12 }
13
14 int
15 fn2 (int x, int b[3])
16 {
17 return x + sizeof b; /* { dg-warning "on array function parameter" } */
18 }
19
20 int
21 fn3 (int *p)
22 {
23 return sizeof p;
24 }
25
26 int fn4 (int *p);
27 int
28 fn4 (int p[])
29 {
30 return sizeof p; /* { dg-warning "on array function parameter" } */
31 }
32
33 int fn5 (int x[]);
34 int
35 fn5 (int *x)
36 {
37 return sizeof x;
38 }
39
40 #ifndef __cplusplus
41 /* C++ doesn't know VLA unspec. */
42 int fn6 (int x[*]);
43 int
44 fn6 (int x[])
45 {
46 return sizeof x; /* { dg-warning "on array function parameter" "" { target c } } */
47 }
48 #endif
49
50 int
51 fn7 (int x[][2])
52 {
53 return sizeof x; /* { dg-warning "on array function parameter" } */
54 }
55
56 int
57 fn8 (char *x[])
58 {
59 return sizeof x; /* { dg-warning "on array function parameter" } */
60 }
61
62 int
63 fn9 (char **x)
64 {
65 return sizeof x;
66 }
67
68 #ifndef __cplusplus
69 int
70 fn10 (int a, char x[static sizeof a])
71 {
72 return sizeof x; /* { dg-warning "on array function parameter" "" { target c } } */
73 }
74
75 int
76 fn11 (a)
77 char a[];
78 {
79 return sizeof a; /* { dg-warning "on array function parameter" "" { target c } } */
80 }
81
82 int
83 fn12 (a)
84 char *a;
85 {
86 return sizeof a;
87 }
88 #endif
89
90 int
91 fn13 (char (*x)[2])
92 {
93 return sizeof x;
94 }
95
96 int
97 fn14 (T t)
98 {
99 return sizeof t; /* { dg-warning "on array function parameter" } */
100 }