annotate gcc/testsuite/gcc.dg/warn-strlen-no-nul.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* PR tree-optimization/86552 - missing warning for reading past the end
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 of non-string arrays
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 { dg-options "-O2 -Wall -ftrack-macro-expansion=0" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 extern __SIZE_TYPE__ strlen (const char*);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 const char a[5] = "12345"; /* { dg-message "declared here" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 int v0 = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 int v1 = 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 volatile int v2;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 void sink (int, ...);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 #define CONCAT(a, b) a ## b
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 #define CAT(a, b) CONCAT(a, b)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 #define T(str) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 __attribute__ ((noipa)) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 void CAT (test_, __LINE__) (void) { \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 int i0 = 0, i1 = i0 + 1, i2 = i1 + 1, i3 = i2 + 1; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 sink (strlen (str), i0, i1, i2, i3); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 } typedef void dummy_type
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 T (a); /* { dg-warning "argument missing terminating nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 T (&a[0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 T (&a[0] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 T (&a[1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 T (&a[v0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 T (&a[v0] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 const char b[][5] = { /* { dg-message "declared here" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 "12", "123", "1234", "54321"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 T (b[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 T (b[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 T (b[2]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 T (b[3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 T (b[i0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 T (b[i1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 T (b[i2]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 T (b[i3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 T (b[v0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 T (&b[i2][i1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 T (&b[i2][i1] + i1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 T (&b[i2][v0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 T (&b[i2][i1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 T (&b[2][1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 T (&b[2][1] + i1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 T (&b[2][i0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 T (&b[2][1] + i0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 T (&b[2][1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 T (&b[2][1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 T (&b[2][v0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 T (&b[3][1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 T (&b[3][1] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 T (&b[3][1] + i1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 T (&b[3][v0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 T (&b[3][1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 T (&b[3][v0] + v1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 T (&b[i3][i1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 T (&b[i3][i1] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 T (&b[i3][i1] + i1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 T (&b[i3][v0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 T (&b[i3][i1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 T (&b[i3][v0] + v1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 T (v0 ? "" : b[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79 T (v0 ? "" : b[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 T (v0 ? "" : b[2]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81 T (v0 ? "" : b[3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82 T (v0 ? b[0] : "");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 T (v0 ? b[1] : "");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 T (v0 ? b[2] : "");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 T (v0 ? b[3] : ""); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 T (v0 ? "" : b[i0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 T (v0 ? "" : b[i1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 T (v0 ? "" : b[i2]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 /* The following is diagnosed but the warning location is wrong
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 (the PRE pass loses it). */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 T (v0 ? "" : b[i3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93 T (v0 ? b[i0] : "");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94 T (v0 ? b[i1] : "");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 T (v0 ? b[i2] : "");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96 T (v0 ? b[i3] : ""); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
97
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
98 T (v0 ? "1234" : b[3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
99 T (v0 ? "1234" : b[i3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
100 T (v0 ? b[3] : "1234"); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
101 T (v0 ? b[i3] : "1234"); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
102
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
103 T (v0 ? a : b[3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
104 T (v0 ? b[0] : b[2]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
105 T (v0 ? b[2] : b[3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
106 T (v0 ? b[3] : b[2]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
107
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
108 T (v0 ? a : b[i3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
109 T (v0 ? b[i0] : b[i2]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
110 T (v0 ? b[i2] : b[i3]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
111 T (v0 ? b[i3] : b[i2]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
112
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
113 T (v0 ? b[0] : &b[3][0] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
114 T (v0 ? b[0] : &b[3][0] + i1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
115 T (v0 ? b[1] : &b[3][1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
116
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
117 T (v0 ? b[i0] : &b[i3][i0] + i1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
118 T (v0 ? b[i0] : &b[i3][i0] + i1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
119 T (v0 ? b[i1] : &b[i3][i1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
120
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
121 T (v0 ? &b[3][1] + v0 : b[2]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
122 T (v0 ? &b[3][v0] : &b[3][v1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
123
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
124
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
125 struct A { char a[5], b[5]; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
126
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
127 const struct A s = { "1234", "12345" };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
128
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
129 T (s.a);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
130 T (&s.a[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
131 T (&s.a[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
132 T (&s.a[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
133 T (&s.a[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
134 T (&s.a[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
135 T (&s.a[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
136
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
137 T (&s.a[i0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
138 T (&s.a[i0] + i1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
139 T (&s.a[i0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
140 T (&s.a[i1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
141 T (&s.a[i1] + i1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
142 T (&s.a[i1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
143
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
144 T (s.b); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
145 T (&s.b[0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
146 T (&s.b[0] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
147 T (&s.b[0] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
148 T (&s.b[1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
149 T (&s.b[1] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
150 T (&s.b[1] + i0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
151 T (&s.b[1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
152
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
153 T (&s.b[i0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
154 T (&s.b[i0] + i1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
155 T (&s.b[i0] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
156 T (&s.b[i1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
157 T (&s.b[i1] + i1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
158 T (&s.b[i1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
159
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
160 struct B { struct A a[2]; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
161
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
162 const struct B ba[] = {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
163 { { { "123", "12345" }, { "12345", "123" } } },
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
164 { { { "12345", "123" }, { "123", "12345" } } },
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
165 { { { "1", "12" }, { "123", "1234" } } },
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
166 { { { "123", "1234" }, { "12345", "12" } } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
167 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
168
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
169 T (ba[0].a[0].a);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
170 T (&ba[0].a[0].a[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
171 T (&ba[0].a[0].a[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
172 T (&ba[0].a[0].a[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
173 T (&ba[0].a[0].a[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
174 T (&ba[0].a[0].a[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
175 T (&ba[0].a[0].a[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
176
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
177 T (ba[0].a[0].b); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
178 T (&ba[0].a[0].b[0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
179 T (&ba[0].a[0].b[0] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
180 T (&ba[0].a[0].b[0] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
181 T (&ba[0].a[0].b[1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
182 T (&ba[0].a[0].b[1] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
183 T (&ba[0].a[0].b[1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
184
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
185 T (ba[0].a[1].a); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
186 T (&ba[0].a[1].a[0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
187 T (&ba[0].a[1].a[0] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
188 T (&ba[0].a[1].a[0] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
189 T (&ba[0].a[1].a[1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
190 T (&ba[0].a[1].a[1] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
191 T (&ba[0].a[1].a[1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
192
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
193 T (ba[0].a[1].b);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
194 T (&ba[0].a[1].b[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
195 T (&ba[0].a[1].b[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
196 T (&ba[0].a[1].b[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
197 T (&ba[0].a[1].b[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
198 T (&ba[0].a[1].b[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
199 T (&ba[0].a[1].b[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
200
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
201
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
202 T (ba[1].a[0].a); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
203 T (&ba[1].a[0].a[0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
204 T (&ba[1].a[0].a[0] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
205 T (&ba[1].a[0].a[0] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
206 T (&ba[1].a[0].a[1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
207 T (&ba[1].a[0].a[1] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
208 T (&ba[1].a[0].a[1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
209
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
210 T (ba[1].a[0].b);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
211 T (&ba[1].a[0].b[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
212 T (&ba[1].a[0].b[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
213 T (&ba[1].a[0].b[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
214 T (&ba[1].a[0].b[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
215 T (&ba[1].a[0].b[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
216 T (&ba[1].a[0].b[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
217
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
218 T (ba[1].a[1].a);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
219 T (&ba[1].a[1].a[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
220 T (&ba[1].a[1].a[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
221 T (&ba[1].a[1].a[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
222 T (&ba[1].a[1].a[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
223 T (&ba[1].a[1].a[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
224 T (&ba[1].a[1].a[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
225
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
226 T (ba[1].a[1].b); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
227 T (&ba[1].a[1].b[0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
228 T (&ba[1].a[1].b[0] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
229 T (&ba[1].a[1].b[0] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
230 T (&ba[1].a[1].b[1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
231 T (&ba[1].a[1].b[1] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
232 T (&ba[1].a[1].b[1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
233
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
234
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
235 T (ba[2].a[0].a);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
236 T (&ba[2].a[0].a[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
237 T (&ba[2].a[0].a[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
238 T (&ba[2].a[0].a[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
239 T (&ba[2].a[0].a[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
240 T (&ba[2].a[0].a[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
241 T (&ba[2].a[0].a[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
242
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
243 T (ba[2].a[0].b);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
244 T (&ba[2].a[0].b[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
245 T (&ba[2].a[0].b[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
246 T (&ba[2].a[0].b[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
247 T (&ba[2].a[0].b[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
248 T (&ba[2].a[0].b[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
249 T (&ba[2].a[0].b[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
250
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
251 T (ba[2].a[1].a);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
252 T (&ba[2].a[1].a[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
253 T (&ba[2].a[1].a[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
254 T (&ba[2].a[1].a[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
255 T (&ba[2].a[1].a[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
256 T (&ba[2].a[1].a[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
257 T (&ba[2].a[1].a[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
258
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
259
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
260 T (ba[3].a[0].a);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
261 T (&ba[3].a[0].a[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
262 T (&ba[3].a[0].a[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
263 T (&ba[3].a[0].a[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
264 T (&ba[3].a[0].a[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
265 T (&ba[3].a[0].a[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
266 T (&ba[3].a[0].a[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
267
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
268 T (ba[3].a[0].b);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
269 T (&ba[3].a[0].b[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
270 T (&ba[3].a[0].b[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
271 T (&ba[3].a[0].b[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
272 T (&ba[3].a[0].b[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
273 T (&ba[3].a[0].b[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
274 T (&ba[3].a[0].b[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
275
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
276 T (ba[3].a[1].a); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
277 T (&ba[3].a[1].a[0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
278 T (&ba[3].a[1].a[0] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
279 T (&ba[3].a[1].a[0] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
280 T (&ba[3].a[1].a[1]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
281 T (&ba[3].a[1].a[1] + 1); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
282 T (&ba[3].a[1].a[1] + v0); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
283
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
284 T (ba[3].a[1].b);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
285 T (&ba[3].a[1].b[0]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
286 T (&ba[3].a[1].b[0] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
287 T (&ba[3].a[1].b[0] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
288 T (&ba[3].a[1].b[1]);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
289 T (&ba[3].a[1].b[1] + 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
290 T (&ba[3].a[1].b[1] + v0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
291
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
292
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
293 T (v0 ? ba[0].a[0].a : ba[0].a[0].b); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
294 T (v0 ? ba[0].a[0].a : ba[0].a[0].b); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
295
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
296 T (v0 ? &ba[0].a[0].a[0] : &ba[3].a[1].a[0]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
297 T (v0 ? &ba[3].a[1].a[1] : ba[0].a[0].a); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
298
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
299 T (v0 ? ba[0].a[0].a : ba[0].a[1].b);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
300 T (v0 ? ba[0].a[1].b : ba[0].a[0].a);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
301
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
302 T (v2 ? b[1] : &b[3][1] + v2); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
303 T (v2 ? &b[3][1] + v2 : b[2]); /* { dg-warning "nul" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
304 T (v2 ? &b[3][v2] : &b[2][v2]); /* { dg-warning "nul" } */