Clang Project

clang_source_code/test/Analysis/_Bool-increment-decrement.c
1// 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}
141