]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gcc.dg/Warray-bounds-49.c
Update copyright years.
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / Warray-bounds-49.c
CommitLineData
49fb45c8
MS
1/* PR middle-end/91647 - missing -Warray-bounds accessing a zero-length array
2 of a declared object
3 { dg-do "compile" }
4 { dg-options "-O2 -Wall" } */
5
6struct __attribute__ ((aligned (16))) A16
7{
8 __INT64_TYPE__ i8;
9 __INT16_TYPE__ i2;
10 __INT16_TYPE__ a2[];
11};
12
13struct A16 a0 = { };
14
15void test_a0 (void)
16{
17 // The first three elements fit in the tail padding.
18 a0.a2[0] = 0; a0.a2[1] = 1; a0.a2[2] = 2;
19
09f04139 20 a0.a2[3] = 3; // { dg-warning "array subscript 3 is above array bounds of 'short int\\\[]'" }
49fb45c8
MS
21}
22
23
24struct A16 a1 = { .a2 = { 1 } };
25
26void test_a1 (void)
27{
28 a1.a2[0] = 0; a1.a2[1] = 1; a1.a2[2] = 2;
29
09f04139 30 a1.a2[3] = 3; // { dg-warning "array subscript 3 is above array bounds of 'short int\\\[]'" }
49fb45c8
MS
31}
32
33
34struct A16 a2 = { .a2 = { 1, 2 } };
35
36void test_a2 (void)
37{
38 a2.a2[0] = 0; a2.a2[1] = 1; a2.a2[2] = 2;
39
09f04139 40 a2.a2[3] = 3; // { dg-warning "array subscript 3 is above array bounds of 'short int\\\[]'" }
49fb45c8
MS
41}
42
43
44struct A16 a3 = { .a2 = { 1, 2, 3 } };
45
46void test_a3 (void)
47{
48 a3.a2[0] = 0; a3.a2[1] = 1; a3.a2[2] = 2;
49
09f04139 50 a3.a2[3] = 3; // { dg-warning "array subscript 3 is above array bounds of 'short int\\\[]'" }
49fb45c8
MS
51}
52
53
54struct A16 a4 = { .a2 = { 1, 2, 3, 4 } };
55
56void test_a4 (void)
57{
58 a4.a2[0] = 0; a4.a2[1] = 1; a4.a2[2] = 2; a4.a2[3] = 3;
59
09f04139 60 a4.a2[4] = 4; // { dg-warning "array subscript 4 is above array bounds of 'short int\\\[]'" }
49fb45c8
MS
61}
62
63
64struct A16 a5 = { .a2 = { 1, 2, 3, 4, 5 } };
65
66void test_a5 (void)
67{
68 a5.a2[0] = 0; a5.a2[1] = 1; a5.a2[2] = 2; a5.a2[3] = 3; a5.a2[4] = 4;
69
09f04139 70 a5.a2[5] = 5; // { dg-warning "array subscript 5 is above array bounds of 'short int\\\[]'" }
49fb45c8
MS
71}
72
73
74struct A16 a6 = { .a2 = { 1, 2, 3, 4, 5, 6 } };
75
76void test_a6 (void)
77{
78 a6.a2[0] = 0; a6.a2[1] = 1; a6.a2[2] = 2; a6.a2[3] = 3; a6.a2[4] = 4;
79 a6.a2[5] = 5;
80
09f04139 81 a6.a2[6] = 6; // { dg-warning "array subscript 6 is above array bounds of 'short int\\\[]'" }
49fb45c8
MS
82}
83
84
85struct A16 a7 = { .a2 = { 1, 2, 3, 4, 5, 6, 7 } };
86
87void test_a7 (void)
88{
89 a7.a2[0] = 0; a7.a2[1] = 1; a7.a2[2] = 2; a7.a2[3] = 3; a7.a2[4] = 4;
90 a7.a2[5] = 5; a7.a2[5] = 5; a7.a2[6] = 6;
91
09f04139 92 a7.a2[7] = 7; // { dg-warning "array subscript 7 is above array bounds of 'short int\\\[]'" }
49fb45c8
MS
93}
94
95
96struct A16 a8 = { .a2 = { 1, 2, 3, 4, 5, 6, 7, 8 } };
97
98void test_a8 (void)
99{
100 a8.a2[0] = 0; a8.a2[1] = 1; a8.a2[2] = 2; a8.a2[3] = 3; a8.a2[4] = 4;
101 a8.a2[5] = 5; a8.a2[5] = 5; a8.a2[6] = 6; a8.a2[7] = 7;
102
09f04139 103 a8.a2[8] = 8; // { dg-warning "array subscript 8 is above array bounds of 'short int\\\[]'" }
49fb45c8
MS
104}
105
106
107struct A16 a9 = { .a2 = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } };
108
109void test_a9 (void)
110{
111 a8.a2[0] = 8; a8.a2[1] = 7; a8.a2[2] = 6; a8.a2[3] = 5; a8.a2[4] = 4;
112 a8.a2[5] = 3; a8.a2[5] = 2; a8.a2[6] = 1; a8.a2[7] = 0;
113
09f04139 114 a8.a2[9] = 8; // { dg-warning "array subscript 9 is above array bounds of 'short int\\\[]'" }
49fb45c8 115}