1 /* PR middle-end/101300 - -fsanitize=undefined suppresses -Wuninitialized
2 for a VLA read at -O0
3 { dg-do compile }
4 { dg-options "-O0 -Wall -fsanitize=undefined" } */
5
warn_vla_rd0(int n)6 int warn_vla_rd0 (int n)
7 {
8 char a[n];
9 return a[0]; // { dg-warning "\\\[-Wuninitialized]" }
10 }
11
warn_vla_rd1(int n)12 int warn_vla_rd1 (int n)
13 {
14 char a[n];
15 return a[1]; // { dg-warning "\\\[-Wuninitialized]" }
16 }
17
warn_vla_rdi(int n,int i)18 int warn_vla_rdi (int n, int i)
19 {
20 char a[n];
21 return a[i]; // { dg-warning "\\\[-Wuninitialized]" }
22 }
23
24
warn_vla_wr0_rd2_1_0(int n)25 int warn_vla_wr0_rd2_1_0 (int n)
26 {
27 char a[n];
28 a[0] = __LINE__;
29 int x = a[2]; // { dg-warning "\\\[-Wuninitialized]" }
30 int y = a[1]; // { dg-warning "\\\[-Wuninitialized]" }
31 int z = a[0];
32 return x + y + z;
33 }
34
warn_vla_wr1_rd2_1_0(int n)35 int warn_vla_wr1_rd2_1_0 (int n)
36 {
37 char a[n];
38 a[1] = __LINE__;
39 int x = a[2]; // { dg-warning "\\\[-Wuninitialized]" }
40 int y = a[1];
41 int z = a[0]; // { dg-warning "\\\[-Wuninitialized]" }
42 return x + y + z;
43 }
44
warn_vla_wr2_rd2_1_0(int n)45 int warn_vla_wr2_rd2_1_0 (int n)
46 {
47 char a[n];
48 a[2] = __LINE__;
49 int x = a[2];
50 int y = a[1]; // { dg-warning "\\\[-Wuninitialized]" }
51 int z = a[0]; // { dg-warning "\\\[-Wuninitialized]" }
52 return x + y + z;
53 }
54