1 /* Tests of brace-enclosed initializers
2 Some of these use the CONSTRUCTOR tree code, but it appears
3 only for a full zero-init; it appears that by the time the analyzer
4 runs that this initialization has been converted into field-wise
5 gimple assign stmts, with just "zero-init everything" CONSTRUCTORs
6 and "clobber" CONSTRUCTORs. */
8 #include "../../gcc.dg/analyzer/analyzer-decls.h"
29 struct coord c
= {3, 4};
30 __analyzer_eval (c
.x
== 3); /* { dg-warning "TRUE" } */
31 __analyzer_eval (c
.y
== 4); /* { dg-warning "TRUE" } */
37 __analyzer_eval (c
.x
== 3); /* { dg-warning "TRUE" } */
38 __analyzer_eval (c
.y
== 0); /* { dg-warning "TRUE" } */
44 __analyzer_eval (c
.x
== 0); /* { dg-warning "TRUE" } */
45 __analyzer_eval (c
.y
== 0); /* { dg-warning "TRUE" } */
51 __analyzer_eval (c
[0] == 3); /* { dg-warning "TRUE" } */
52 __analyzer_eval (c
[1] == 4); /* { dg-warning "TRUE" } */
58 __analyzer_eval (c
[0] == 3); /* { dg-warning "TRUE" } */
59 __analyzer_eval (c
[1] == 0); /* { dg-warning "TRUE" } */
65 __analyzer_eval (c
[0] == 0); /* { dg-warning "TRUE" } */
66 __analyzer_eval (c
[1] == 0); /* { dg-warning "TRUE" } */
71 struct coord c
[2] = {{3, 4}, {5, 6}};
72 __analyzer_eval (c
[0].x
== 3); /* { dg-warning "TRUE" } */
73 __analyzer_eval (c
[0].y
== 4); /* { dg-warning "TRUE" } */
74 __analyzer_eval (c
[1].x
== 5); /* { dg-warning "TRUE" } */
75 __analyzer_eval (c
[1].y
== 6); /* { dg-warning "TRUE" } */
80 struct coord c
[2] = {{3}, {5}};
81 __analyzer_eval (c
[0].x
== 3); /* { dg-warning "TRUE" } */
82 __analyzer_eval (c
[0].y
== 0); /* { dg-warning "TRUE" } */
83 __analyzer_eval (c
[1].x
== 5); /* { dg-warning "TRUE" } */
84 __analyzer_eval (c
[1].y
== 0); /* { dg-warning "TRUE" } */
89 struct coord c
[2] = {{}, {}};
90 __analyzer_eval (c
[0].x
== 0); /* { dg-warning "TRUE" } */
91 __analyzer_eval (c
[0].y
== 0); /* { dg-warning "TRUE" } */
92 __analyzer_eval (c
[1].x
== 0); /* { dg-warning "TRUE" } */
93 __analyzer_eval (c
[1].y
== 0); /* { dg-warning "TRUE" } */
98 struct coord c
[2] = {{.x
= 3, .y
= 4}, {5, 6}};
99 __analyzer_eval (c
[0].x
== 3); /* { dg-warning "TRUE" } */
100 __analyzer_eval (c
[0].y
== 4); /* { dg-warning "TRUE" } */
101 __analyzer_eval (c
[1].x
== 5); /* { dg-warning "TRUE" } */
102 __analyzer_eval (c
[1].y
== 6); /* { dg-warning "TRUE" } */
107 struct coord c
[2] = {{.y
= 4}, {5, 6}};
108 __analyzer_eval (c
[0].x
== 0); /* { dg-warning "TRUE" } */
109 __analyzer_eval (c
[0].y
== 4); /* { dg-warning "TRUE" } */
110 __analyzer_eval (c
[1].x
== 5); /* { dg-warning "TRUE" } */
111 __analyzer_eval (c
[1].y
== 6); /* { dg-warning "TRUE" } */
117 __analyzer_eval (t
.v
[0].x
== 0); /* { dg-warning "TRUE" } */
118 __analyzer_eval (t
.v
[2].y
== 0); /* { dg-warning "TRUE" } */
123 struct tri t
= {3, 4, 5, 6, 7, 8};
124 __analyzer_eval (t
.v
[0].x
== 3); /* { dg-warning "TRUE" } */
125 __analyzer_eval (t
.v
[0].y
== 4); /* { dg-warning "TRUE" } */
126 __analyzer_eval (t
.v
[1].x
== 5); /* { dg-warning "TRUE" } */
127 __analyzer_eval (t
.v
[1].y
== 6); /* { dg-warning "TRUE" } */
128 __analyzer_eval (t
.v
[2].x
== 7); /* { dg-warning "TRUE" } */
129 __analyzer_eval (t
.v
[2].y
== 8); /* { dg-warning "TRUE" } */
135 __analyzer_eval (u
.i
== 0); /* { dg-warning "TRUE" } */