1 /* PR middle-end/97552 - missing waning passing null to a VLA argument
2 declared [static]
3 { dg-do compile }
4 { dg-options "-Wall" } */
5
6 #define A(...) __attribute__ ((__VA_ARGS__))
7
8 void fptr_array (int(*)[0]);
9
10 void fstatic_array (int[static 0]);
11 void A (nonnull) fnonnull_static_array (int [static 0]);
12
13 void fvla (int n, int [n]);
14 void A (nonnull) fnonnull_vla (int n, int [n]);
15
16 void fstatic_vla (int n, int [static n]);
17 void A (nonnull) fnonnull_static_vla (int n, int [static n]);
18
19
20 void test_null (void)
21 {
22 fptr_array (0);
23 fptr_array (&(int[0]){ });
24
25 fstatic_array (0); // { dg-warning "\\\[-Wnonnull" }
26 fnonnull_static_array (0); // { dg-warning "\\\[-Wnonnull" }
27
28 fvla (0, 0);
29 fnonnull_vla (0, 0); // { dg-warning "\\\[-Wnonnull" }
30
31 fstatic_vla (0, 0); // { dg-warning "\\\[-Wnonnull" }
32 fnonnull_static_vla (0, 0); // { dg-warning "\\\[-Wnonnull" }
33 }
34
35
36 #pragma GCC optimize ("1")
37
38 void test_null_optimized (void)
39 {
40 int (*pa)[0] = 0;
41 fptr_array (pa);
42
43 int *p = 0;
44
45 fstatic_array (p); // { dg-warning "\\\[-Wnonnull" }
46 fnonnull_static_array (p); // { dg-warning "\\\[-Wnonnull" }
47
48 fvla (0, p);
49 fnonnull_vla (0, p); // { dg-warning "\\\[-Wnonnull" }
50
51 fstatic_vla (0, p); // { dg-warning "\\\[-Wnonnull" }
52 fnonnull_static_vla (0, p); // { dg-warning "\\\[-Wnonnull" }
53 }