]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gcc.dg/Warray-bounds-50.c
Update copyright years.
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / Warray-bounds-50.c
CommitLineData
2f967bc4
MS
1/* PR middle-end/92349 - ICE in -Warray-bounds on a VLA member
2 { dg-do compile }
ebd20377
TV
3 { dg-options "-O2 -Wall" }
4 { dg-require-effective-target alloca } */
2f967bc4
MS
5
6typedef __SIZE_TYPE__ size_t;
7
8void sink (void*, ...);
9
10void mem_vla_cst_store_idx (void)
11{
12 int n = 3;
13
14 struct {
15 char a[n], b;
16 } s;
17
18 char *p = s.a;
19
20 s.a[0] = 0;
21 s.b = 0;
22
23 *++p = 1;
24 *++p = 2;
25
26 sink (&s, p);
27}
28
29void mem_vla_range_store_idx (int n)
30{
31 if (n < 3 || 4 < n)
32 n = 3;
33
34 struct {
35 char a[n], b;
36 } s;
37
38 char *p = s.a;
39
40 s.a[0] = 0;
41 s.b = 0;
42
43 *++p = 1;
44 *++p = 2;
45
46 sink (&s, p);
47}
48
49void mem_vla_var_store_idx (size_t n)
50{
51 struct {
52 char a[n], b;
53 } s;
54
55 char *p = s.a;
56
57 s.a[0] = 0;
58 s.b = 0;
59
60 *++p = 1;
61 *++p = 2;
62
63 sink (&s, p);
64}
65
66
67void mem_vla_cst_store_ptr (void)
68{
69 int n = 3;
70
71 struct {
72 char a[n], b;
73 } s;
74
75 char *p = s.a;
76
77 *p++ = __LINE__;
78 *p++ = __LINE__;
79 *p++ = __LINE__;
80
81 sink (&s, p);
82}
83
84void mem_vla_range_store_ptr (int n)
85{
86 if (n < 3 || 4 < n)
87 n = 3;
88
89 struct {
90 char a[n], b;
91 } s;
92
93 char *p = s.a;
94
95 *p++ = __LINE__;
96 *p++ = __LINE__;
97 *p++ = __LINE__;
98
99 sink (&s, p);
100}
101
102void mem_vla_var_store_ptr (size_t n)
103{
104 struct {
105 char a[n], b;
106 } s;
107
108 char *p = s.a;
109
110 *p++ = __LINE__;
111 *p++ = __LINE__;
112 *p++ = __LINE__;
113
114 sink (&s, p);
115}