blob: 477b6ed43830e79a7c0f0b15e1640643b1cd39d3 [file] [log] [blame]
Henry Wonge47b89d2018-03-06 12:29:09 +00001// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c99 -Dbool=_Bool -Dtrue=1 -Dfalse=0 %s
2// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c11 -Dbool=_Bool -Dtrue=1 -Dfalse=0 %s
3extern void clang_analyzer_eval(bool);
4
5void test__Bool_value() {
6 {
7 bool b = true;
8 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
9 }
10
11 {
12 bool b = false;
13 clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
14 }
15
16 {
17 bool b = -10;
18 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
19 }
20
21 {
22 bool b = 10;
23 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
24 }
25
26 {
27 bool b = 10;
28 b++;
29 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
30 }
31
32 {
33 bool b = 0;
34 b++;
35 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
36 }
37}
38
39void test__Bool_increment() {
40 {
41 bool b = true;
42 b++;
43 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
44 }
45
46 {
47 bool b = false;
48 b++;
49 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
50 }
51
52 {
53 bool b = true;
54 ++b;
55 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
56 }
57
58 {
59 bool b = false;
60 ++b;
61 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
62 }
63
64 {
65 bool b = 0;
66 ++b;
67 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
68 }
69
70 {
71 bool b = 10;
72 ++b;
73 ++b;
74 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
75 }
76
77 {
78 bool b = -10;
79 ++b;
80 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
81 }
82
83 {
84 bool b = -1;
85 ++b;
86 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
87 }
88}
89
90void test__Bool_decrement() {
91 {
92 bool b = true;
93 b--;
94 clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
95 }
96
97 {
98 bool b = false;
99 b--;
100 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
101 }
102
103 {
104 bool b = true;
105 --b;
106 clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
107 }
108
109 {
110 bool b = false;
111 --b;
112 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
113 }
114
115 {
116 bool b = 0;
117 --b;
118 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
119 }
120
121 {
122 bool b = 10;
123 --b;
124 clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
125 --b;
126 clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
127 }
128
129 {
130 bool b = -10;
131 --b;
132 clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
133 }
134
135 {
136 bool b = 1;
137 --b;
138 clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
139 }
140}