@@ -4,105 +4,6 @@ template <typename T>
44void clang_analyzer_dump (T x);
55void clang_analyzer_eval (int );
66
7- struct S {
8- int a = 3 ;
9- };
10- S const sarr[2 ] = {};
11- void definit () {
12- int i = 1 ;
13- // FIXME: Should recognize that it is 3.
14- clang_analyzer_eval (sarr[i].a ); // expected-warning{{UNKNOWN}}
15- }
16-
17- int const glob_arr1[3 ] = {};
18- void glob_array_index1 () {
19- clang_analyzer_eval (glob_arr1[0 ] == 0 ); // expected-warning{{TRUE}}
20- clang_analyzer_eval (glob_arr1[1 ] == 0 ); // expected-warning{{TRUE}}
21- clang_analyzer_eval (glob_arr1[2 ] == 0 ); // expected-warning{{TRUE}}
22- }
23-
24- void glob_invalid_index1 () {
25- const int *ptr = glob_arr1;
26- int idx = -42 ;
27- auto x = ptr[idx]; // expected-warning{{garbage or undefined}}
28- }
29-
30- void glob_symbolic_index1 (int idx) {
31- clang_analyzer_dump (glob_arr1[idx]); // expected-warning{{Unknown}}
32- }
33-
34- int const glob_arr2[4 ] = {1 , 2 };
35- void glob_ptr_index1 () {
36- int const *ptr = glob_arr2;
37- clang_analyzer_eval (ptr[0 ] == 1 ); // expected-warning{{TRUE}}
38- clang_analyzer_eval (ptr[1 ] == 2 ); // expected-warning{{TRUE}}
39- clang_analyzer_eval (ptr[2 ] == 0 ); // expected-warning{{TRUE}}
40- clang_analyzer_eval (ptr[3 ] == 0 ); // expected-warning{{TRUE}}
41- clang_analyzer_eval (ptr[4 ] == 0 ); // expected-warning{{UNDEFINED}}
42- }
43-
44- void glob_invalid_index2 () {
45- const int *ptr = glob_arr2;
46- int idx = 42 ;
47- auto x = ptr[idx]; // expected-warning{{garbage or undefined}}
48- }
49-
50- const float glob_arr3[] = {
51- 0.0000 , 0.0235 , 0.0470 , 0.0706 , 0.0941 , 0.1176 };
52- float no_warn_garbage_value () {
53- return glob_arr3[0 ]; // no-warning (garbage or undefined)
54- }
55-
56- int const glob_arr4[4 ][2 ] = {};
57- void glob_array_index2 () {
58- clang_analyzer_eval (glob_arr4[0 ][0 ] == 0 ); // expected-warning{{TRUE}}
59- clang_analyzer_eval (glob_arr4[1 ][0 ] == 0 ); // expected-warning{{TRUE}}
60- clang_analyzer_eval (glob_arr4[1 ][1 ] == 0 ); // expected-warning{{TRUE}}
61- }
62-
63- void glob_invalid_index3 () {
64- int idx = -42 ;
65- auto x = glob_arr4[1 ][idx]; // expected-warning{{garbage or undefined}}
66- }
67-
68- void glob_invalid_index4 () {
69- const int *ptr = glob_arr4[1 ];
70- int idx = -42 ;
71- auto x = ptr[idx]; // expected-warning{{garbage or undefined}}
72- }
73-
74- int const glob_arr5[4 ][2 ] = {{1 }, 3 , 4 , 5 };
75- void glob_array_index3 () {
76- clang_analyzer_eval (glob_arr5[0 ][0 ] == 1 ); // expected-warning{{TRUE}}
77- clang_analyzer_eval (glob_arr5[0 ][1 ] == 0 ); // expected-warning{{TRUE}}
78- clang_analyzer_eval (glob_arr5[1 ][0 ] == 3 ); // expected-warning{{TRUE}}
79- clang_analyzer_eval (glob_arr5[1 ][1 ] == 4 ); // expected-warning{{TRUE}}
80- clang_analyzer_eval (glob_arr5[2 ][0 ] == 5 ); // expected-warning{{TRUE}}
81- clang_analyzer_eval (glob_arr5[2 ][1 ] == 0 ); // expected-warning{{TRUE}}
82- clang_analyzer_eval (glob_arr5[3 ][0 ] == 0 ); // expected-warning{{TRUE}}
83- clang_analyzer_eval (glob_arr5[3 ][1 ] == 0 ); // expected-warning{{TRUE}}
84- }
85-
86- void glob_ptr_index2 () {
87- int const *ptr = glob_arr5[1 ];
88- clang_analyzer_eval (ptr[0 ] == 3 ); // expected-warning{{TRUE}}
89- clang_analyzer_eval (ptr[1 ] == 4 ); // expected-warning{{TRUE}}
90- clang_analyzer_eval (ptr[2 ] == 5 ); // expected-warning{{UNDEFINED}}
91- clang_analyzer_eval (ptr[3 ] == 0 ); // expected-warning{{UNDEFINED}}
92- clang_analyzer_eval (ptr[4 ] == 0 ); // expected-warning{{UNDEFINED}}
93- }
94-
95- void glob_invalid_index5 () {
96- int idx = -42 ;
97- auto x = glob_arr5[1 ][idx]; // expected-warning{{garbage or undefined}}
98- }
99-
100- void glob_invalid_index6 () {
101- int const *ptr = &glob_arr5[1 ][0 ];
102- int idx = 42 ;
103- auto x = ptr[idx]; // expected-warning{{garbage or undefined}}
104- }
105-
1067extern const int glob_arr_no_init[10 ];
1078void glob_array_index4 () {
1089 clang_analyzer_eval (glob_arr_no_init[2 ]); // expected-warning{{UNKNOWN}}
@@ -147,26 +48,6 @@ void glob_invalid_index8() {
14748 auto x = ptr[idx]; // expected-warning{{garbage or undefined}}
14849}
14950
150- char const glob_arr7[5 ] = {" 123" };
151- void glob_array_index6 () {
152- clang_analyzer_eval (glob_arr7[0 ] == ' 1' ); // expected-warning{{TRUE}}
153- clang_analyzer_eval (glob_arr7[1 ] == ' 2' ); // expected-warning{{TRUE}}
154- clang_analyzer_eval (glob_arr7[2 ] == ' 3' ); // expected-warning{{TRUE}}
155- clang_analyzer_eval (glob_arr7[3 ] == ' \0 ' ); // expected-warning{{TRUE}}
156- clang_analyzer_eval (glob_arr7[4 ] == ' \0 ' ); // expected-warning{{TRUE}}
157- }
158-
159- void glob_invalid_index9 () {
160- int idx = -42 ;
161- auto x = glob_arr7[idx]; // expected-warning{{garbage or undefined}}
162- }
163-
164- void glob_invalid_index10 () {
165- const char *ptr = glob_arr7;
166- int idx = 42 ;
167- auto x = ptr[idx]; // expected-warning{{garbage or undefined}}
168- }
169-
17051char const *const glob_ptr8 = " 123" ;
17152void glob_ptr_index4 () {
17253 clang_analyzer_eval (glob_ptr8[0 ] == ' 1' ); // expected-warning{{TRUE}}
@@ -221,38 +102,3 @@ void glob_ptr_index8() {
221102 clang_analyzer_eval (glob_ptr12[2 ] == ' c' ); // expected-warning{{TRUE}}
222103 clang_analyzer_eval (glob_ptr12[3 ] == ' \0 ' ); // expected-warning{{TRUE}}
223104}
224-
225- typedef int Int;
226- typedef Int const CInt;
227- typedef CInt Arr[2 ];
228- typedef Arr Arr2[4 ];
229- Arr2 glob_arr8 = {{1 }, 3 , 4 , 5 }; // const int[4][2]
230- void glob_array_typedef1 () {
231- clang_analyzer_eval (glob_arr8[0 ][0 ] == 1 ); // expected-warning{{TRUE}}
232- clang_analyzer_eval (glob_arr8[0 ][1 ] == 0 ); // expected-warning{{TRUE}}
233- clang_analyzer_eval (glob_arr8[1 ][0 ] == 3 ); // expected-warning{{TRUE}}
234- clang_analyzer_eval (glob_arr8[1 ][1 ] == 4 ); // expected-warning{{TRUE}}
235- clang_analyzer_eval (glob_arr8[2 ][0 ] == 5 ); // expected-warning{{TRUE}}
236- clang_analyzer_eval (glob_arr8[2 ][1 ] == 0 ); // expected-warning{{TRUE}}
237- clang_analyzer_eval (glob_arr8[3 ][0 ] == 0 ); // expected-warning{{TRUE}}
238- clang_analyzer_eval (glob_arr8[3 ][1 ] == 0 ); // expected-warning{{TRUE}}
239- }
240-
241- const int glob_arr9[2 ][4 ] = {{(1 ), 2 , ((3 )), 4 }, 5 , 6 , (((7 )))};
242- void glob_array_parentheses1 () {
243- clang_analyzer_eval (glob_arr9[0 ][0 ] == 1 ); // expected-warning{{TRUE}}
244- clang_analyzer_eval (glob_arr9[0 ][1 ] == 2 ); // expected-warning{{TRUE}}
245- clang_analyzer_eval (glob_arr9[0 ][2 ] == 3 ); // expected-warning{{TRUE}}
246- clang_analyzer_eval (glob_arr9[0 ][3 ] == 4 ); // expected-warning{{TRUE}}
247- clang_analyzer_eval (glob_arr9[1 ][0 ] == 5 ); // expected-warning{{TRUE}}
248- clang_analyzer_eval (glob_arr9[1 ][1 ] == 6 ); // expected-warning{{TRUE}}
249- clang_analyzer_eval (glob_arr9[1 ][2 ] == 7 ); // expected-warning{{TRUE}}
250- clang_analyzer_eval (glob_arr9[1 ][3 ] == 0 ); // expected-warning{{TRUE}}
251- }
252-
253- enum class E {};
254- const E glob[] = {{}};
255- void initlistWithinInitlist () {
256- // no-crash
257- clang_analyzer_dump (glob[0 ]); // expected-warning-re {{reg_${{[0-9]+}}<enum E Element{glob,0 S64b,enum E}>}}
258- }
0 commit comments