blob: 1fcb0668e50fea5529ba3a696a3bdf6961be22c7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
// RUN: %clang_analyze_cc1 -verify %s -analyzer-config eagerly-assume=false \
// RUN: -analyzer-checker=core,debug.ExprInspection
void clang_analyzer_eval(bool);
void element_constant() {
char arr[10];
clang_analyzer_eval(arr + 1 > arr); // expected-warning{{TRUE}}
}
void element_known() {
char arr[10];
int off = 1;
clang_analyzer_eval(arr + off > arr); // expected-warning{{TRUE}}
}
void element_constrained(int off) {
char arr[10];
if (off == 1) {
clang_analyzer_eval(arr + off > arr); // expected-warning{{TRUE}}
}
}
void element_unknown(int off) {
char arr[10];
clang_analyzer_eval(arr + off > arr); // expected-warning{{UNKNOWN}}
}
void element_complex(int off) {
char arr[10];
int comp = off * 2;
if (off == 1) {
clang_analyzer_eval(arr + comp); // expected-warning{{TRUE}}
}
}
void base_constant(int *arr) {
clang_analyzer_eval(arr + 1 > arr); // expected-warning{{TRUE}}
}
void base_known(int *arr) {
int off = 1;
clang_analyzer_eval(arr + off > arr); // expected-warning{{TRUE}}
}
void base_constrained(int *arr, int off) {
if (off == 1) {
clang_analyzer_eval(arr + off > arr); // expected-warning{{TRUE}}
}
}
void base_unknown(int *arr, int off) {
clang_analyzer_eval(arr + off > arr); // expected-warning{{UNKNOWN}}
}
void base_complex(int *arr, int off) {
int comp = off * 2;
if (off == 1) {
clang_analyzer_eval(arr + comp > arr); // expected-warning{{TRUE}}
}
}
|