1 // RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection,core.builtin -analyzer-config aggressive-binary-operation-simplification=true -verify %s
2
3 void clang_analyzer_dump(int x);
4 void clang_analyzer_eval(int x);
5
6 void exit(int);
7
8 #define UINT_MAX (~0U)
9 #define INT_MAX (UINT_MAX & (UINT_MAX >> 1))
10
11 extern void __assert_fail (__const char *__assertion, __const char *__file,
12 unsigned int __line, __const char *__function)
13 __attribute__ ((__noreturn__));
14 #define assert(expr) \
15 ((expr) ? (void)(0) : __assert_fail (#expr, __FILE__, __LINE__, __func__))
16
17 int g();
f()18 int f() {
19 int x = g();
20 // Assert that no overflows occur in this test file.
21 // Assuming that concrete integers are also within that range.
22 assert(x <= ((int)INT_MAX / 4));
23 assert(x >= -((int)INT_MAX / 4));
24 return x;
25 }
26
compare_different_symbol_equal()27 void compare_different_symbol_equal() {
28 int x = f(), y = f();
29 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
30 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
31 clang_analyzer_dump(x == y);
32 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 0}}
33 }
34
compare_different_symbol_plus_left_int_equal()35 void compare_different_symbol_plus_left_int_equal() {
36 int x = f()+1, y = f();
37 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
38 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
39 clang_analyzer_dump(x == y);
40 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) == 1}}
41 }
42
compare_different_symbol_minus_left_int_equal()43 void compare_different_symbol_minus_left_int_equal() {
44 int x = f()-1, y = f();
45 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
46 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
47 clang_analyzer_dump(x == y);
48 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 1}}
49 }
50
compare_different_symbol_plus_right_int_equal()51 void compare_different_symbol_plus_right_int_equal() {
52 int x = f(), y = f()+2;
53 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
54 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 2}}
55 clang_analyzer_dump(x == y);
56 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 2}}
57 }
58
compare_different_symbol_minus_right_int_equal()59 void compare_different_symbol_minus_right_int_equal() {
60 int x = f(), y = f()-2;
61 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
62 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 2}}
63 clang_analyzer_dump(x == y);
64 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) == 2}}
65 }
66
compare_different_symbol_plus_left_plus_right_int_equal()67 void compare_different_symbol_plus_left_plus_right_int_equal() {
68 int x = f()+2, y = f()+1;
69 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
70 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
71 clang_analyzer_dump(x == y);
72 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) == 1}}
73 }
74
compare_different_symbol_plus_left_minus_right_int_equal()75 void compare_different_symbol_plus_left_minus_right_int_equal() {
76 int x = f()+2, y = f()-1;
77 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
78 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
79 clang_analyzer_dump(x == y);
80 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) == 3}}
81 }
82
compare_different_symbol_minus_left_plus_right_int_equal()83 void compare_different_symbol_minus_left_plus_right_int_equal() {
84 int x = f()-2, y = f()+1;
85 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
86 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
87 clang_analyzer_dump(x == y);
88 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 3}}
89 }
90
compare_different_symbol_minus_left_minus_right_int_equal()91 void compare_different_symbol_minus_left_minus_right_int_equal() {
92 int x = f()-2, y = f()-1;
93 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
94 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
95 clang_analyzer_dump(x == y);
96 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 1}}
97 }
98
compare_same_symbol_equal()99 void compare_same_symbol_equal() {
100 int x = f(), y = x;
101 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
102 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
103 clang_analyzer_eval(x == y);
104 // expected-warning@-1{{TRUE}}
105 }
106
compare_same_symbol_plus_left_int_equal()107 void compare_same_symbol_plus_left_int_equal() {
108 int x = f(), y = x;
109 ++x;
110 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
111 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
112 clang_analyzer_eval(x == y);
113 // expected-warning@-1{{FALSE}}
114 }
115
compare_same_symbol_minus_left_int_equal()116 void compare_same_symbol_minus_left_int_equal() {
117 int x = f(), y = x;
118 --x;
119 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
120 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
121 clang_analyzer_eval(x == y);
122 // expected-warning@-1{{FALSE}}
123 }
124
compare_same_symbol_plus_right_int_equal()125 void compare_same_symbol_plus_right_int_equal() {
126 int x = f(), y = x+1;
127 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
128 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
129 clang_analyzer_eval(x == y);
130 // expected-warning@-1{{FALSE}}
131 }
132
compare_same_symbol_minus_right_int_equal()133 void compare_same_symbol_minus_right_int_equal() {
134 int x = f(), y = x-1;
135 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
136 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
137 clang_analyzer_eval(x == y);
138 // expected-warning@-1{{FALSE}}
139 }
140
compare_same_symbol_plus_left_plus_right_int_equal()141 void compare_same_symbol_plus_left_plus_right_int_equal() {
142 int x = f(), y = x+1;
143 ++x;
144 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
145 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
146 clang_analyzer_eval(x == y);
147 // expected-warning@-1{{TRUE}}
148 }
149
compare_same_symbol_plus_left_minus_right_int_equal()150 void compare_same_symbol_plus_left_minus_right_int_equal() {
151 int x = f(), y = x-1;
152 ++x;
153 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
154 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
155 clang_analyzer_eval(x == y);
156 // expected-warning@-1{{FALSE}}
157 }
158
compare_same_symbol_minus_left_plus_right_int_equal()159 void compare_same_symbol_minus_left_plus_right_int_equal() {
160 int x = f(), y = x+1;
161 --x;
162 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
163 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
164 clang_analyzer_eval(x == y);
165 // expected-warning@-1{{FALSE}}
166 }
167
compare_same_symbol_minus_left_minus_right_int_equal()168 void compare_same_symbol_minus_left_minus_right_int_equal() {
169 int x = f(), y = x-1;
170 --x;
171 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
172 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
173 clang_analyzer_eval(x == y);
174 // expected-warning@-1{{TRUE}}
175 }
176
compare_different_symbol_less_or_equal()177 void compare_different_symbol_less_or_equal() {
178 int x = f(), y = f();
179 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
180 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
181 clang_analyzer_dump(x <= y);
182 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 0}}
183 }
184
compare_different_symbol_plus_left_int_less_or_equal()185 void compare_different_symbol_plus_left_int_less_or_equal() {
186 int x = f()+1, y = f();
187 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
188 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
189 clang_analyzer_dump(x <= y);
190 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) >= 1}}
191 }
192
compare_different_symbol_minus_left_int_less_or_equal()193 void compare_different_symbol_minus_left_int_less_or_equal() {
194 int x = f()-1, y = f();
195 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
196 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
197 clang_analyzer_dump(x <= y);
198 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 1}}
199 }
200
compare_different_symbol_plus_right_int_less_or_equal()201 void compare_different_symbol_plus_right_int_less_or_equal() {
202 int x = f(), y = f()+2;
203 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
204 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 2}}
205 clang_analyzer_dump(x <= y);
206 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 2}}
207 }
208
compare_different_symbol_minus_right_int_less_or_equal()209 void compare_different_symbol_minus_right_int_less_or_equal() {
210 int x = f(), y = f()-2;
211 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
212 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 2}}
213 clang_analyzer_dump(x <= y);
214 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) >= 2}}
215 }
216
compare_different_symbol_plus_left_plus_right_int_less_or_equal()217 void compare_different_symbol_plus_left_plus_right_int_less_or_equal() {
218 int x = f()+2, y = f()+1;
219 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
220 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
221 clang_analyzer_dump(x <= y);
222 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) >= 1}}
223 }
224
compare_different_symbol_plus_left_minus_right_int_less_or_equal()225 void compare_different_symbol_plus_left_minus_right_int_less_or_equal() {
226 int x = f()+2, y = f()-1;
227 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
228 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
229 clang_analyzer_dump(x <= y);
230 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) >= 3}}
231 }
232
compare_different_symbol_minus_left_plus_right_int_less_or_equal()233 void compare_different_symbol_minus_left_plus_right_int_less_or_equal() {
234 int x = f()-2, y = f()+1;
235 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
236 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
237 clang_analyzer_dump(x <= y);
238 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 3}}
239 }
240
compare_different_symbol_minus_left_minus_right_int_less_or_equal()241 void compare_different_symbol_minus_left_minus_right_int_less_or_equal() {
242 int x = f()-2, y = f()-1;
243 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
244 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
245 clang_analyzer_dump(x <= y);
246 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 1}}
247 }
248
compare_same_symbol_less_or_equal()249 void compare_same_symbol_less_or_equal() {
250 int x = f(), y = x;
251 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
252 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
253 clang_analyzer_eval(x <= y);
254 // expected-warning@-1{{TRUE}}
255 }
256
compare_same_symbol_plus_left_int_less_or_equal()257 void compare_same_symbol_plus_left_int_less_or_equal() {
258 int x = f(), y = x;
259 ++x;
260 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
261 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
262 clang_analyzer_eval(x <= y);
263 // expected-warning@-1{{FALSE}}
264 }
265
compare_same_symbol_minus_left_int_less_or_equal()266 void compare_same_symbol_minus_left_int_less_or_equal() {
267 int x = f(), y = x;
268 --x;
269 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
270 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
271 clang_analyzer_eval(x <= y);
272 // expected-warning@-1{{TRUE}}
273 }
274
compare_same_symbol_plus_right_int_less_or_equal()275 void compare_same_symbol_plus_right_int_less_or_equal() {
276 int x = f(), y = x+1;
277 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
278 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
279 clang_analyzer_eval(x <= y);
280 // expected-warning@-1{{TRUE}}
281 }
282
compare_same_symbol_minus_right_int_less_or_equal()283 void compare_same_symbol_minus_right_int_less_or_equal() {
284 int x = f(), y = x-1;
285 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
286 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
287 clang_analyzer_eval(x <= y);
288 // expected-warning@-1{{FALSE}}
289 }
290
compare_same_symbol_plus_left_plus_right_int_less_or_equal()291 void compare_same_symbol_plus_left_plus_right_int_less_or_equal() {
292 int x = f(), y = x+1;
293 ++x;
294 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
295 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
296 clang_analyzer_eval(x <= y);
297 // expected-warning@-1{{TRUE}}
298 }
299
compare_same_symbol_plus_left_minus_right_int_less_or_equal()300 void compare_same_symbol_plus_left_minus_right_int_less_or_equal() {
301 int x = f(), y = x-1;
302 ++x;
303 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
304 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
305 clang_analyzer_eval(x <= y);
306 // expected-warning@-1{{FALSE}}
307 }
308
compare_same_symbol_minus_left_plus_right_int_less_or_equal()309 void compare_same_symbol_minus_left_plus_right_int_less_or_equal() {
310 int x = f(), y = x+1;
311 --x;
312 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
313 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
314 clang_analyzer_eval(x <= y);
315 // expected-warning@-1{{TRUE}}
316 }
317
compare_same_symbol_minus_left_minus_right_int_less_or_equal()318 void compare_same_symbol_minus_left_minus_right_int_less_or_equal() {
319 int x = f(), y = x-1;
320 --x;
321 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
322 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
323 clang_analyzer_eval(x <= y);
324 // expected-warning@-1{{TRUE}}
325 }
326
compare_different_symbol_less()327 void compare_different_symbol_less() {
328 int x = f(), y = f();
329 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
330 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
331 clang_analyzer_dump(x < y);
332 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 0}}
333 }
334
compare_different_symbol_plus_left_int_less()335 void compare_different_symbol_plus_left_int_less() {
336 int x = f()+1, y = f();
337 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
338 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
339 clang_analyzer_dump(x < y);
340 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) > 1}}
341 }
342
compare_different_symbol_minus_left_int_less()343 void compare_different_symbol_minus_left_int_less() {
344 int x = f()-1, y = f();
345 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
346 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
347 clang_analyzer_dump(x < y);
348 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 1}}
349 }
350
compare_different_symbol_plus_right_int_less()351 void compare_different_symbol_plus_right_int_less() {
352 int x = f(), y = f()+2;
353 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
354 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 2}}
355 clang_analyzer_dump(x < y);
356 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 2}}
357 }
358
compare_different_symbol_minus_right_int_less()359 void compare_different_symbol_minus_right_int_less() {
360 int x = f(), y = f()-2;
361 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
362 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 2}}
363 clang_analyzer_dump(x < y);
364 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) > 2}}
365 }
366
compare_different_symbol_plus_left_plus_right_int_less()367 void compare_different_symbol_plus_left_plus_right_int_less() {
368 int x = f()+2, y = f()+1;
369 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
370 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
371 clang_analyzer_dump(x < y);
372 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) > 1}}
373 }
374
compare_different_symbol_plus_left_minus_right_int_less()375 void compare_different_symbol_plus_left_minus_right_int_less() {
376 int x = f()+2, y = f()-1;
377 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
378 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
379 clang_analyzer_dump(x < y);
380 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) > 3}}
381 }
382
compare_different_symbol_minus_left_plus_right_int_less()383 void compare_different_symbol_minus_left_plus_right_int_less() {
384 int x = f()-2, y = f()+1;
385 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
386 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
387 clang_analyzer_dump(x < y);
388 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 3}}
389 }
390
compare_different_symbol_minus_left_minus_right_int_less()391 void compare_different_symbol_minus_left_minus_right_int_less() {
392 int x = f()-2, y = f()-1;
393 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
394 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
395 clang_analyzer_dump(x < y);
396 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 1}}
397 }
398
compare_same_symbol_less()399 void compare_same_symbol_less() {
400 int x = f(), y = x;
401 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
402 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
403 clang_analyzer_eval(x < y);
404 // expected-warning@-1{{FALSE}}
405 }
406
compare_same_symbol_plus_left_int_less()407 void compare_same_symbol_plus_left_int_less() {
408 int x = f(), y = x;
409 ++x;
410 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
411 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
412 clang_analyzer_eval(x < y);
413 // expected-warning@-1{{FALSE}}
414 }
415
compare_same_symbol_minus_left_int_less()416 void compare_same_symbol_minus_left_int_less() {
417 int x = f(), y = x;
418 --x;
419 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
420 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
421 clang_analyzer_eval(x < y);
422 // expected-warning@-1{{TRUE}}
423 }
424
compare_same_symbol_plus_right_int_less()425 void compare_same_symbol_plus_right_int_less() {
426 int x = f(), y = x+1;
427 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
428 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
429 clang_analyzer_eval(x < y);
430 // expected-warning@-1{{TRUE}}
431 }
432
compare_same_symbol_minus_right_int_less()433 void compare_same_symbol_minus_right_int_less() {
434 int x = f(), y = x-1;
435 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
436 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
437 clang_analyzer_eval(x < y);
438 // expected-warning@-1{{FALSE}}
439 }
440
compare_same_symbol_plus_left_plus_right_int_less()441 void compare_same_symbol_plus_left_plus_right_int_less() {
442 int x = f(), y = x+1;
443 ++x;
444 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
445 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
446 clang_analyzer_eval(x < y);
447 // expected-warning@-1{{FALSE}}
448 }
449
compare_same_symbol_plus_left_minus_right_int_less()450 void compare_same_symbol_plus_left_minus_right_int_less() {
451 int x = f(), y = x-1;
452 ++x;
453 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
454 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
455 clang_analyzer_eval(x < y);
456 // expected-warning@-1{{FALSE}}
457 }
458
compare_same_symbol_minus_left_plus_right_int_less()459 void compare_same_symbol_minus_left_plus_right_int_less() {
460 int x = f(), y = x+1;
461 --x;
462 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
463 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
464 clang_analyzer_eval(x < y);
465 // expected-warning@-1{{TRUE}}
466 }
467
compare_same_symbol_minus_left_minus_right_int_less()468 void compare_same_symbol_minus_left_minus_right_int_less() {
469 int x = f(), y = x-1;
470 --x;
471 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
472 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
473 clang_analyzer_eval(x < y);
474 // expected-warning@-1{{FALSE}}
475 }
476
compare_different_symbol_equal_unsigned()477 void compare_different_symbol_equal_unsigned() {
478 unsigned x = f(), y = f();
479 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
480 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
481 clang_analyzer_dump(x == y);
482 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 0}}
483 }
484
compare_different_symbol_plus_left_int_equal_unsigned()485 void compare_different_symbol_plus_left_int_equal_unsigned() {
486 unsigned x = f()+1, y = f();
487 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
488 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
489 clang_analyzer_dump(x == y);
490 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) == 1}}
491 }
492
compare_different_symbol_minus_left_int_equal_unsigned()493 void compare_different_symbol_minus_left_int_equal_unsigned() {
494 unsigned x = f()-1, y = f();
495 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
496 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
497 clang_analyzer_dump(x == y);
498 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 1}}
499 }
500
compare_different_symbol_plus_right_int_equal_unsigned()501 void compare_different_symbol_plus_right_int_equal_unsigned() {
502 unsigned x = f(), y = f()+2;
503 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
504 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 2}}
505 clang_analyzer_dump(x == y);
506 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 2}}
507 }
508
compare_different_symbol_minus_right_int_equal_unsigned()509 void compare_different_symbol_minus_right_int_equal_unsigned() {
510 unsigned x = f(), y = f()-2;
511 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
512 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 2}}
513 clang_analyzer_dump(x == y);
514 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) == 2}}
515 }
516
compare_different_symbol_plus_left_plus_right_int_equal_unsigned()517 void compare_different_symbol_plus_left_plus_right_int_equal_unsigned() {
518 unsigned x = f()+2, y = f()+1;
519 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
520 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
521 clang_analyzer_dump(x == y);
522 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) == 1}}
523 }
524
compare_different_symbol_plus_left_minus_right_int_equal_unsigned()525 void compare_different_symbol_plus_left_minus_right_int_equal_unsigned() {
526 unsigned x = f()+2, y = f()-1;
527 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
528 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
529 clang_analyzer_dump(x == y);
530 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) == 3}}
531 }
532
compare_different_symbol_minus_left_plus_right_int_equal_unsigned()533 void compare_different_symbol_minus_left_plus_right_int_equal_unsigned() {
534 unsigned x = f()-2, y = f()+1;
535 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
536 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
537 clang_analyzer_dump(x == y);
538 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 3}}
539 }
540
compare_different_symbol_minus_left_minus_right_int_equal_unsigned()541 void compare_different_symbol_minus_left_minus_right_int_equal_unsigned() {
542 unsigned x = f()-2, y = f()-1;
543 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
544 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
545 clang_analyzer_dump(x == y);
546 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) == 1}}
547 }
548
compare_same_symbol_equal_unsigned()549 void compare_same_symbol_equal_unsigned() {
550 unsigned x = f(), y = x;
551 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
552 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
553 clang_analyzer_eval(x == y);
554 // expected-warning@-1{{TRUE}}
555 }
556
compare_same_symbol_plus_left_int_equal_unsigned()557 void compare_same_symbol_plus_left_int_equal_unsigned() {
558 unsigned x = f(), y = x;
559 ++x;
560 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
561 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
562 clang_analyzer_dump(x == y);
563 // expected-warning@-1{{((conj_$2{int}) + 1U) == (conj_$2{int})}}
564 }
565
compare_same_symbol_minus_left_int_equal_unsigned()566 void compare_same_symbol_minus_left_int_equal_unsigned() {
567 unsigned x = f(), y = x;
568 --x;
569 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
570 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
571 clang_analyzer_dump(x == y);
572 // expected-warning@-1{{((conj_$2{int}) - 1U) == (conj_$2{int})}}
573 }
574
compare_same_symbol_plus_right_int_equal_unsigned()575 void compare_same_symbol_plus_right_int_equal_unsigned() {
576 unsigned x = f(), y = x+1;
577 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
578 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
579 clang_analyzer_dump(x == y);
580 // expected-warning@-1{{(conj_$2{int}) == ((conj_$2{int}) + 1U)}}
581 }
582
compare_same_symbol_minus_right_int_equal_unsigned()583 void compare_same_symbol_minus_right_int_equal_unsigned() {
584 unsigned x = f(), y = x-1;
585 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
586 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
587 clang_analyzer_dump(x == y);
588 // expected-warning@-1{{(conj_$2{int}) == ((conj_$2{int}) - 1U)}}
589 }
590
compare_same_symbol_plus_left_plus_right_int_equal_unsigned()591 void compare_same_symbol_plus_left_plus_right_int_equal_unsigned() {
592 unsigned x = f(), y = x+1;
593 ++x;
594 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
595 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
596 clang_analyzer_eval(x == y);
597 // expected-warning@-1{{TRUE}}
598 }
599
compare_same_symbol_plus_left_minus_right_int_equal_unsigned()600 void compare_same_symbol_plus_left_minus_right_int_equal_unsigned() {
601 unsigned x = f(), y = x-1;
602 ++x;
603 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
604 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
605 clang_analyzer_dump(x == y);
606 // expected-warning@-1{{((conj_$2{int}) + 1U) == ((conj_$2{int}) - 1U)}}
607 }
608
compare_same_symbol_minus_left_plus_right_int_equal_unsigned()609 void compare_same_symbol_minus_left_plus_right_int_equal_unsigned() {
610 unsigned x = f(), y = x+1;
611 --x;
612 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
613 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
614 clang_analyzer_dump(x == y);
615 // expected-warning@-1{{((conj_$2{int}) - 1U) == ((conj_$2{int}) + 1U)}}
616 }
617
compare_same_symbol_minus_left_minus_right_int_equal_unsigned()618 void compare_same_symbol_minus_left_minus_right_int_equal_unsigned() {
619 unsigned x = f(), y = x-1;
620 --x;
621 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
622 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
623 clang_analyzer_eval(x == y);
624 // expected-warning@-1{{TRUE}}
625 }
626
compare_different_symbol_less_or_equal_unsigned()627 void compare_different_symbol_less_or_equal_unsigned() {
628 unsigned x = f(), y = f();
629 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
630 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
631 clang_analyzer_dump(x <= y);
632 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 0}}
633 }
634
compare_different_symbol_plus_left_int_less_or_equal_unsigned()635 void compare_different_symbol_plus_left_int_less_or_equal_unsigned() {
636 unsigned x = f()+1, y = f();
637 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
638 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
639 clang_analyzer_dump(x <= y);
640 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) >= 1}}
641 }
642
compare_different_symbol_minus_left_int_less_or_equal_unsigned()643 void compare_different_symbol_minus_left_int_less_or_equal_unsigned() {
644 unsigned x = f()-1, y = f();
645 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
646 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
647 clang_analyzer_dump(x <= y);
648 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 1}}
649 }
650
compare_different_symbol_plus_right_int_less_or_equal_unsigned()651 void compare_different_symbol_plus_right_int_less_or_equal_unsigned() {
652 unsigned x = f(), y = f()+2;
653 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
654 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 2}}
655 clang_analyzer_dump(x <= y);
656 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 2}}
657 }
658
compare_different_symbol_minus_right_int_less_or_equal_unsigned()659 void compare_different_symbol_minus_right_int_less_or_equal_unsigned() {
660 unsigned x = f(), y = f()-2;
661 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
662 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 2}}
663 clang_analyzer_dump(x <= y);
664 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) >= 2}}
665 }
666
compare_different_symbol_plus_left_plus_right_int_less_or_equal_unsigned()667 void compare_different_symbol_plus_left_plus_right_int_less_or_equal_unsigned() {
668 unsigned x = f()+2, y = f()+1;
669 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
670 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
671 clang_analyzer_dump(x <= y);
672 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) >= 1}}
673 }
674
compare_different_symbol_plus_left_minus_right_int_less_or_equal_unsigned()675 void compare_different_symbol_plus_left_minus_right_int_less_or_equal_unsigned() {
676 unsigned x = f()+2, y = f()-1;
677 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
678 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
679 clang_analyzer_dump(x <= y);
680 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) >= 3}}
681 }
682
compare_different_symbol_minus_left_plus_right_int_less_or_equal_unsigned()683 void compare_different_symbol_minus_left_plus_right_int_less_or_equal_unsigned() {
684 unsigned x = f()-2, y = f()+1;
685 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
686 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
687 clang_analyzer_dump(x <= y);
688 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 3}}
689 }
690
compare_different_symbol_minus_left_minus_right_int_less_or_equal_unsigned()691 void compare_different_symbol_minus_left_minus_right_int_less_or_equal_unsigned() {
692 unsigned x = f()-2, y = f()-1;
693 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
694 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
695 clang_analyzer_dump(x <= y);
696 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) <= 1}}
697 }
698
compare_same_symbol_less_or_equal_unsigned()699 void compare_same_symbol_less_or_equal_unsigned() {
700 unsigned x = f(), y = x;
701 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
702 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
703 clang_analyzer_eval(x <= y);
704 // expected-warning@-1{{TRUE}}
705 }
706
compare_same_symbol_plus_left_int_less_or_equal_unsigned()707 void compare_same_symbol_plus_left_int_less_or_equal_unsigned() {
708 unsigned x = f(), y = x;
709 ++x;
710 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
711 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
712 clang_analyzer_dump(x <= y);
713 // expected-warning@-1{{((conj_$2{int}) + 1U) <= (conj_$2{int})}}
714 }
715
compare_same_symbol_minus_left_int_less_or_equal_unsigned()716 void compare_same_symbol_minus_left_int_less_or_equal_unsigned() {
717 unsigned x = f(), y = x;
718 --x;
719 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
720 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
721 clang_analyzer_dump(x <= y);
722 // expected-warning@-1{{((conj_$2{int}) - 1U) <= (conj_$2{int})}}
723 }
724
compare_same_symbol_plus_right_int_less_or_equal_unsigned()725 void compare_same_symbol_plus_right_int_less_or_equal_unsigned() {
726 unsigned x = f(), y = x+1;
727 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
728 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
729 clang_analyzer_dump(x <= y);
730 // expected-warning@-1{{(conj_$2{int}) <= ((conj_$2{int}) + 1U)}}
731 }
732
compare_same_symbol_minus_right_int_less_or_equal_unsigned()733 void compare_same_symbol_minus_right_int_less_or_equal_unsigned() {
734 unsigned x = f(), y = x-1;
735 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
736 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
737 clang_analyzer_dump(x <= y);
738 // expected-warning@-1{{(conj_$2{int}) <= ((conj_$2{int}) - 1U)}}
739 }
740
compare_same_symbol_plus_left_plus_right_int_less_or_equal_unsigned()741 void compare_same_symbol_plus_left_plus_right_int_less_or_equal_unsigned() {
742 unsigned x = f(), y = x+1;
743 ++x;
744 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
745 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
746 clang_analyzer_eval(x <= y);
747 // expected-warning@-1{{TRUE}}
748 }
749
compare_same_symbol_plus_left_minus_right_int_less_or_equal_unsigned()750 void compare_same_symbol_plus_left_minus_right_int_less_or_equal_unsigned() {
751 unsigned x = f(), y = x-1;
752 ++x;
753 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
754 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
755 clang_analyzer_dump(x <= y);
756 // expected-warning@-1{{((conj_$2{int}) + 1U) <= ((conj_$2{int}) - 1U)}}
757 }
758
compare_same_symbol_minus_left_plus_right_int_less_or_equal_unsigned()759 void compare_same_symbol_minus_left_plus_right_int_less_or_equal_unsigned() {
760 unsigned x = f(), y = x+1;
761 --x;
762 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
763 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
764 clang_analyzer_dump(x <= y);
765 // expected-warning@-1{{((conj_$2{int}) - 1U) <= ((conj_$2{int}) + 1U)}}
766 }
767
compare_same_symbol_minus_left_minus_right_int_less_or_equal_unsigned()768 void compare_same_symbol_minus_left_minus_right_int_less_or_equal_unsigned() {
769 unsigned x = f(), y = x-1;
770 --x;
771 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
772 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
773 clang_analyzer_eval(x <= y);
774 // expected-warning@-1{{TRUE}}
775 }
776
compare_different_symbol_less_unsigned()777 void compare_different_symbol_less_unsigned() {
778 unsigned x = f(), y = f();
779 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
780 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
781 clang_analyzer_dump(x < y);
782 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 0}}
783 }
784
compare_different_symbol_plus_left_int_less_unsigned()785 void compare_different_symbol_plus_left_int_less_unsigned() {
786 unsigned x = f()+1, y = f();
787 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
788 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
789 clang_analyzer_dump(x < y);
790 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) > 1}}
791 }
792
compare_different_symbol_minus_left_int_less_unsigned()793 void compare_different_symbol_minus_left_int_less_unsigned() {
794 unsigned x = f()-1, y = f();
795 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
796 clang_analyzer_dump(y); // expected-warning{{conj_$9{int}}}
797 clang_analyzer_dump(x < y);
798 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 1}}
799 }
800
compare_different_symbol_plus_right_int_less_unsigned()801 void compare_different_symbol_plus_right_int_less_unsigned() {
802 unsigned x = f(), y = f()+2;
803 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
804 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 2}}
805 clang_analyzer_dump(x < y);
806 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 2}}
807 }
808
compare_different_symbol_minus_right_int_less_unsigned()809 void compare_different_symbol_minus_right_int_less_unsigned() {
810 unsigned x = f(), y = f()-2;
811 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
812 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 2}}
813 clang_analyzer_dump(x < y);
814 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) > 2}}
815 }
816
compare_different_symbol_plus_left_plus_right_int_less_unsigned()817 void compare_different_symbol_plus_left_plus_right_int_less_unsigned() {
818 unsigned x = f()+2, y = f()+1;
819 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
820 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
821 clang_analyzer_dump(x < y);
822 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) > 1}}
823 }
824
compare_different_symbol_plus_left_minus_right_int_less_unsigned()825 void compare_different_symbol_plus_left_minus_right_int_less_unsigned() {
826 unsigned x = f()+2, y = f()-1;
827 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 2}}
828 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
829 clang_analyzer_dump(x < y);
830 // expected-warning@-1{{((conj_$9{int}) - (conj_$2{int})) > 3}}
831 }
832
compare_different_symbol_minus_left_plus_right_int_less_unsigned()833 void compare_different_symbol_minus_left_plus_right_int_less_unsigned() {
834 unsigned x = f()-2, y = f()+1;
835 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
836 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) + 1}}
837 clang_analyzer_dump(x < y);
838 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 3}}
839 }
840
compare_different_symbol_minus_left_minus_right_int_less_unsigned()841 void compare_different_symbol_minus_left_minus_right_int_less_unsigned() {
842 unsigned x = f()-2, y = f()-1;
843 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 2}}
844 clang_analyzer_dump(y); // expected-warning{{(conj_$9{int}) - 1}}
845 clang_analyzer_dump(x < y);
846 // expected-warning@-1{{((conj_$2{int}) - (conj_$9{int})) < 1}}
847 }
848
compare_same_symbol_less_unsigned()849 void compare_same_symbol_less_unsigned() {
850 unsigned x = f(), y = x;
851 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
852 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
853 clang_analyzer_eval(x < y);
854 // expected-warning@-1{{FALSE}}
855 }
856
compare_same_symbol_plus_left_int_less_unsigned()857 void compare_same_symbol_plus_left_int_less_unsigned() {
858 unsigned x = f(), y = x;
859 ++x;
860 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
861 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
862 clang_analyzer_dump(x < y);
863 // expected-warning@-1{{((conj_$2{int}) + 1U) < (conj_$2{int})}}
864 }
865
compare_same_symbol_minus_left_int_less_unsigned()866 void compare_same_symbol_minus_left_int_less_unsigned() {
867 unsigned x = f(), y = x;
868 --x;
869 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
870 clang_analyzer_dump(y); // expected-warning{{conj_$2{int}}}
871 clang_analyzer_dump(x < y);
872 // expected-warning@-1{{((conj_$2{int}) - 1U) < (conj_$2{int})}}
873 }
874
compare_same_symbol_plus_right_int_less_unsigned()875 void compare_same_symbol_plus_right_int_less_unsigned() {
876 unsigned x = f(), y = x+1;
877 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
878 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
879 clang_analyzer_dump(x < y);
880 // expected-warning@-1{{(conj_$2{int}) < ((conj_$2{int}) + 1U)}}
881 }
882
compare_same_symbol_minus_right_int_less_unsigned()883 void compare_same_symbol_minus_right_int_less_unsigned() {
884 unsigned x = f(), y = x-1;
885 clang_analyzer_dump(x); // expected-warning{{conj_$2{int}}}
886 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
887 clang_analyzer_dump(x < y);
888 // expected-warning@-1{{(conj_$2{int}) < ((conj_$2{int}) - 1U)}}
889 }
890
compare_same_symbol_plus_left_plus_right_int_less_unsigned()891 void compare_same_symbol_plus_left_plus_right_int_less_unsigned() {
892 unsigned x = f(), y = x+1;
893 ++x;
894 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
895 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
896 clang_analyzer_eval(x < y);
897 // expected-warning@-1{{FALSE}}
898 }
899
compare_same_symbol_plus_left_minus_right_int_less_unsigned()900 void compare_same_symbol_plus_left_minus_right_int_less_unsigned() {
901 unsigned x = f(), y = x-1;
902 ++x;
903 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) + 1}}
904 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
905 clang_analyzer_dump(x < y);
906 // expected-warning@-1{{((conj_$2{int}) + 1U) < ((conj_$2{int}) - 1U)}}
907 }
908
compare_same_symbol_minus_left_plus_right_int_less_unsigned()909 void compare_same_symbol_minus_left_plus_right_int_less_unsigned() {
910 unsigned x = f(), y = x+1;
911 --x;
912 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
913 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) + 1}}
914 clang_analyzer_dump(x < y);
915 // expected-warning@-1{{((conj_$2{int}) - 1U) < ((conj_$2{int}) + 1U)}}
916 }
917
compare_same_symbol_minus_left_minus_right_int_less_unsigned()918 void compare_same_symbol_minus_left_minus_right_int_less_unsigned() {
919 unsigned x = f(), y = x-1;
920 --x;
921 clang_analyzer_dump(x); // expected-warning{{(conj_$2{int}) - 1}}
922 clang_analyzer_dump(y); // expected-warning{{(conj_$2{int}) - 1}}
923 clang_analyzer_eval(x < y);
924 // expected-warning@-1{{FALSE}}
925 }
926
overflow(signed char n,signed char m)927 void overflow(signed char n, signed char m) {
928 if (n + 0 > m + 0) {
929 clang_analyzer_eval(n - 126 == m + 3); // expected-warning{{UNKNOWN}}
930 }
931 }
932
mixed_integer_types(int x,int y)933 int mixed_integer_types(int x, int y) {
934 short a = x - 1U;
935 return a - y;
936 }
937
938 unsigned gu();
fu()939 unsigned fu() {
940 unsigned x = gu();
941 // Assert that no overflows occur in this test file.
942 // Assuming that concrete integers are also within that range.
943 assert(x <= ((unsigned)UINT_MAX / 4));
944 return x;
945 }
946
unsigned_concrete_int_no_crash()947 void unsigned_concrete_int_no_crash() {
948 unsigned x = fu() + 1U, y = fu() + 1U;
949 clang_analyzer_dump(x == y); // expected-warning {{((conj_$2{unsigned int}) + 1U) == ((conj_$7{unsigned int}) + 1U)}}
950 }
951