Skip to content

Commit 6db1434

Browse files
committed
[analyzer] Add more C++ list initializer tests and regroup
1 parent 12b38c3 commit 6db1434

File tree

3 files changed

+1225
-451
lines changed

3 files changed

+1225
-451
lines changed

clang/test/Analysis/initialization.cpp

Lines changed: 0 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -4,105 +4,6 @@ template <typename T>
44
void clang_analyzer_dump(T x);
55
void 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{{uninitialized}}
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{{uninitialized}}
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 (not meaningful)
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{{uninitialized}}
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{{uninitialized}}
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{{uninitialized}}
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{{uninitialized}}
104-
}
105-
1067
extern const int glob_arr_no_init[10];
1078
void 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{{uninitialized}}
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{{uninitialized}}
162-
}
163-
164-
void glob_invalid_index10() {
165-
const char *ptr = glob_arr7;
166-
int idx = 42;
167-
auto x = ptr[idx]; // expected-warning{{uninitialized}}
168-
}
169-
17051
char const *const glob_ptr8 = "123";
17152
void 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

Comments
 (0)