@@ -4,105 +4,6 @@ template <typename T>
4
4
void clang_analyzer_dump (T x);
5
5
void clang_analyzer_eval (int );
6
6
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
-
106
7
extern const int glob_arr_no_init[10 ];
107
8
void glob_array_index4 () {
108
9
clang_analyzer_eval (glob_arr_no_init[2 ]); // expected-warning{{UNKNOWN}}
@@ -147,26 +48,6 @@ void glob_invalid_index8() {
147
48
auto x = ptr[idx]; // expected-warning{{garbage or undefined}}
148
49
}
149
50
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
-
170
51
char const *const glob_ptr8 = " 123" ;
171
52
void glob_ptr_index4 () {
172
53
clang_analyzer_eval (glob_ptr8[0 ] == ' 1' ); // expected-warning{{TRUE}}
@@ -221,38 +102,3 @@ void glob_ptr_index8() {
221
102
clang_analyzer_eval (glob_ptr12[2 ] == ' c' ); // expected-warning{{TRUE}}
222
103
clang_analyzer_eval (glob_ptr12[3 ] == ' \0 ' ); // expected-warning{{TRUE}}
223
104
}
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