analyzer: enable taint state machine by default [PR103533]
[official-gcc.git] / gcc / testsuite / c-c++-common / Warray-bounds-9.c
blob3b5cdfe12a2aeef04032629f75df5256399e3d87
1 /* PR tree-optimization/99121 - ICE in -Warray-bounds on a multidimensional
2 VLA
3 { dg-do compile }
4 { dg-options "-O2 -Wall -ftrack-macro-expansion=0" }
5 { dg-require-effective-target alloca } */
7 #define NOIPA __attribute__ ((noipa))
9 void sink (void*, ...);
10 #define T(a, x) sink (a, x)
13 NOIPA void a_0_n (int n)
15 int a[0][n];
17 sink (a);
19 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
20 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
21 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
24 NOIPA void a_n_0 (int n)
26 int a[n][0];
28 sink (a);
30 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
31 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
32 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
36 NOIPA void a_1_n_0 (int n)
38 int a[1][n][0];
40 sink (a);
42 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
43 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
44 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
47 NOIPA void a_1_0_n (int n)
49 int a[1][0][n];
51 sink (a);
53 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
54 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
55 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
58 NOIPA void a_0_1_n (int n)
60 int a[0][1][n];
62 sink (a);
64 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
65 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
66 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
69 NOIPA void a_0_n_1 (int n)
71 int a[0][n][1];
73 sink (a);
75 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
76 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
77 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
80 NOIPA void a_n_0_n (int n)
82 int a[n][0][n];
84 sink (a);
86 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
87 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
88 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
91 NOIPA void a_n_n_0 (int n)
93 int a[n][n][0];
95 sink (a);
97 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
98 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
99 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
102 NOIPA void a_0_n_n (int n)
104 int a[0][n][n];
106 sink (a);
108 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
109 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
110 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
113 NOIPA void a_0_0_n (int n)
115 int a[0][0][n];
117 sink (a);
119 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
120 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
121 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
124 NOIPA void a_n_0_0 (int n)
126 int a[n][0][0];
128 sink (a);
130 T (a, ((int *) a)[0]); // { dg-warning "\\\[-Warray-bounds" }
131 T (a, ((char *) a)[1]); // { dg-warning "\\\[-Warray-bounds" }
132 T (a, ((float *) a)[n]); // { dg-warning "\\\[-Warray-bounds" }
135 NOIPA void a_n_n_n (int n)
137 int a[n][n][n];
139 sink (a);
141 T (a, ((int *) a)[-1]); // { dg-warning "\\\[-Warray-bounds" "pr99140" }
142 T (a, ((int *) a)[0]);
143 T (a, ((char *) a)[1]);
144 T (a, ((float *) a)[n]);