annotate gcc/testsuite/gcc.dg/Warray-bounds-49.c @ 145:1830386684a0

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