void clang_analyzer_eval(bool x);
template <typename T>
void clang_analyzer_denote(T x, const char *literal);
template <typename T>
void clang_analyzer_express(T x);
void exit(int);
#define UINT_MAX (~0U)
#define INT_MAX (UINT_MAX & (UINT_MAX >> 1))
extern void __assert_fail (__const char *__assertion, __const char *__file,
unsigned int __line, __const char *__function)
__attribute__ ((__noreturn__));
#define assert(expr) \
((expr) ? (void)(0) : __assert_fail (#expr, __FILE__, __LINE__, __func__))
int g(void);
int f(void) {
int x = g();
assert(x <= ((int)INT_MAX / 4));
assert(x >= -((int)INT_MAX / 4));
return x;
}
void compare_different_symbol_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(x == y); }
void compare_different_symbol_plus_left_int_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x += 1;
clang_analyzer_express(x == y); }
void compare_different_symbol_minus_left_int_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x -= 1;
clang_analyzer_express(x == y); }
void compare_different_symbol_plus_right_int_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
y += 2;
clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_minus_right_int_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
y -= 2;
clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_plus_left_plus_right_int_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x += 2;
y += 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_plus_left_minus_right_int_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x += 2;
y -= 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_minus_left_plus_right_int_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x -= 2;
y += 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_minus_left_minus_right_int_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x -= 2;
y -= 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_same_symbol_equal(void) {
int x = f(), y = x;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_plus_left_int_equal(void) {
int x = f(), y = x;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_minus_left_int_equal(void) {
int x = f(), y = x;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_plus_right_int_equal(void) {
int x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_minus_right_int_equal(void) {
int x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_plus_left_plus_right_int_equal(void) {
int x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_plus_left_minus_right_int_equal(void) {
int x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_minus_left_plus_right_int_equal(void) {
int x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_minus_left_minus_right_int_equal(void) {
int x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_different_symbol_less_or_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(x <= y); }
void compare_different_symbol_plus_left_int_less_or_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x += 1;
clang_analyzer_express(x); clang_analyzer_express(x <= y); }
void compare_different_symbol_minus_left_int_less_or_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x -= 1;
clang_analyzer_express(x <= y); }
void compare_different_symbol_plus_right_int_less_or_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
y += 2;
clang_analyzer_express(x <= y); }
void compare_different_symbol_minus_right_int_less_or_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
y -= 2;
clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_plus_left_plus_right_int_less_or_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x += 2;
y += 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_plus_left_minus_right_int_less_or_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x += 2;
y -= 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_minus_left_plus_right_int_less_or_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x -= 2;
y += 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_minus_left_minus_right_int_less_or_equal(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x -= 2;
y -= 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_same_symbol_less_or_equal(void) {
int x = f(), y = x;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_plus_left_int_less_or_equal(void) {
int x = f(), y = x;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_minus_left_int_less_or_equal(void) {
int x = f(), y = x;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_plus_right_int_less_or_equal(void) {
int x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_minus_right_int_less_or_equal(void) {
int x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_plus_left_plus_right_int_less_or_equal(void) {
int x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_plus_left_minus_right_int_less_or_equal(void) {
int x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_minus_left_plus_right_int_less_or_equal(void) {
int x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_minus_left_minus_right_int_less_or_equal(void) {
int x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_different_symbol_less(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_plus_left_int_less(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x += 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_minus_left_int_less(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x -= 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_plus_right_int_less(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
y += 2;
clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_minus_right_int_less(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
y -= 2;
clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_plus_left_plus_right_int_less(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x += 2;
y += 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_plus_left_minus_right_int_less(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x += 2;
y -= 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_minus_left_plus_right_int_less(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x -= 2;
y += 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_minus_left_minus_right_int_less(void) {
int x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
x -= 2;
y -= 1;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_same_symbol_less(void) {
int x = f(), y = x;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_plus_left_int_less(void) {
int x = f(), y = x;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_minus_left_int_less(void) {
int x = f(), y = x;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_plus_right_int_less(void) {
int x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_minus_right_int_less(void) {
int x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_plus_left_plus_right_int_less(void) {
int x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_plus_left_minus_right_int_less(void) {
int x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_minus_left_plus_right_int_less(void) {
int x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_minus_left_minus_right_int_less(void) {
int x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x < y); }
#ifndef SUPPORT_SYMBOLIC_INTEGER_CASTS
void compare_different_symbol_equal_unsigned(void) {
unsigned x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_plus_left_int_equal_unsigned(void) {
unsigned x = f() + 1, y = f();
clang_analyzer_denote(x - 1, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_minus_left_int_equal_unsigned(void) {
unsigned x = f() - 1, y = f();
clang_analyzer_denote(x + 1, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_plus_right_int_equal_unsigned(void) {
unsigned x = f(), y = f() + 2;
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y - 2, "$y");
clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_minus_right_int_equal_unsigned(void) {
unsigned x = f(), y = f() - 2;
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y + 2, "$y");
clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_plus_left_plus_right_int_equal_unsigned(void) {
unsigned x = f() + 2, y = f() + 1;
clang_analyzer_denote(x - 2, "$x");
clang_analyzer_denote(y - 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_plus_left_minus_right_int_equal_unsigned(void) {
unsigned x = f() + 2, y = f() - 1;
clang_analyzer_denote(x - 2, "$x");
clang_analyzer_denote(y + 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_minus_left_plus_right_int_equal_unsigned(void) {
unsigned x = f() - 2, y = f() + 1;
clang_analyzer_denote(x + 2, "$x");
clang_analyzer_denote(y - 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_different_symbol_minus_left_minus_right_int_equal_unsigned(void) {
unsigned x = f() - 2, y = f() - 1;
clang_analyzer_denote(x + 2, "$x");
clang_analyzer_denote(y + 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_same_symbol_equal_unsigned(void) {
unsigned x = f(), y = x;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_plus_left_int_equal_unsigned(void) {
unsigned x = f(), y = x;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_same_symbol_minus_left_int_equal_unsigned(void) {
unsigned x = f(), y = x;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_same_symbol_plus_right_int_equal_unsigned(void) {
unsigned x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_same_symbol_minus_right_int_equal_unsigned(void) {
unsigned x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_same_symbol_plus_left_plus_right_int_equal_unsigned(void) {
unsigned x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_same_symbol_plus_left_minus_right_int_equal_unsigned(void) {
unsigned x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_same_symbol_minus_left_plus_right_int_equal_unsigned(void) {
unsigned x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x == y); }
void compare_same_symbol_minus_left_minus_right_int_equal_unsigned(void) {
unsigned x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x == y); }
void compare_different_symbol_less_or_equal_unsigned(void) {
unsigned x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_plus_left_int_less_or_equal_unsigned(void) {
unsigned x = f() + 1, y = f();
clang_analyzer_denote(x - 1, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_minus_left_int_less_or_equal_unsigned(void) {
unsigned x = f() - 1, y = f();
clang_analyzer_denote(x + 1, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_plus_right_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = f() + 2;
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y - 2, "$y");
clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_minus_right_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = f() - 2;
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y + 2, "$y");
clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_plus_left_plus_right_int_less_or_equal_unsigned(void) {
unsigned x = f() + 2, y = f() + 1;
clang_analyzer_denote(x - 2, "$x");
clang_analyzer_denote(y - 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_plus_left_minus_right_int_less_or_equal_unsigned(void) {
unsigned x = f() + 2, y = f() - 1;
clang_analyzer_denote(x - 2, "$x");
clang_analyzer_denote(y + 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_minus_left_plus_right_int_less_or_equal_unsigned(void) {
unsigned x = f() - 2, y = f() + 1;
clang_analyzer_denote(x + 2, "$x");
clang_analyzer_denote(y - 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_different_symbol_minus_left_minus_right_int_less_or_equal_unsigned(void) {
unsigned x = f() - 2, y = f() - 1;
clang_analyzer_denote(x + 2, "$x");
clang_analyzer_denote(y + 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_same_symbol_less_or_equal_unsigned(void) {
unsigned x = f(), y = x;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_plus_left_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = x;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_same_symbol_minus_left_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = x;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_same_symbol_plus_right_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_same_symbol_minus_right_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_same_symbol_plus_left_plus_right_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_same_symbol_plus_left_minus_right_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_same_symbol_minus_left_plus_right_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x <= y); }
void compare_same_symbol_minus_left_minus_right_int_less_or_equal_unsigned(void) {
unsigned x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x <= y); }
void compare_different_symbol_less_unsigned(void) {
unsigned x = f(), y = f();
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_plus_left_int_less_unsigned(void) {
unsigned x = f() + 1, y = f();
clang_analyzer_denote(x - 1, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_minus_left_int_less_unsigned(void) {
unsigned x = f() - 1, y = f();
clang_analyzer_denote(x + 1, "$x");
clang_analyzer_denote(y, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_plus_right_int_less_unsigned(void) {
unsigned x = f(), y = f() + 2;
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y - 2, "$y");
clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_minus_right_int_less_unsigned(void) {
unsigned x = f(), y = f() - 2;
clang_analyzer_denote(x, "$x");
clang_analyzer_denote(y + 2, "$y");
clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_plus_left_plus_right_int_less_unsigned(void) {
unsigned x = f() + 2, y = f() + 1;
clang_analyzer_denote(x - 2, "$x");
clang_analyzer_denote(y - 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_plus_left_minus_right_int_less_unsigned(void) {
unsigned x = f() + 2, y = f() - 1;
clang_analyzer_denote(x - 2, "$x");
clang_analyzer_denote(y + 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_minus_left_plus_right_int_less_unsigned(void) {
unsigned x = f() - 2, y = f() + 1;
clang_analyzer_denote(x + 2, "$x");
clang_analyzer_denote(y - 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_different_symbol_minus_left_minus_right_int_less_unsigned(void) {
unsigned x = f() - 2, y = f() - 1;
clang_analyzer_denote(x + 2, "$x");
clang_analyzer_denote(y + 1, "$y");
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
#endif
void compare_same_symbol_less_unsigned(void) {
unsigned x = f(), y = x;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_plus_left_int_less_unsigned(void) {
unsigned x = f(), y = x;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_same_symbol_minus_left_int_less_unsigned(void) {
unsigned x = f(), y = x;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_same_symbol_plus_right_int_less_unsigned(void) {
unsigned x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_same_symbol_minus_right_int_less_unsigned(void) {
unsigned x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_same_symbol_plus_left_plus_right_int_less_unsigned(void) {
unsigned x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void compare_same_symbol_plus_left_minus_right_int_less_unsigned(void) {
unsigned x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
++x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_same_symbol_minus_left_plus_right_int_less_unsigned(void) {
unsigned x = f(), y = x + 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_express(x < y); }
void compare_same_symbol_minus_left_minus_right_int_less_unsigned(void) {
unsigned x = f(), y = x - 1;
clang_analyzer_denote(x, "$x");
--x;
clang_analyzer_express(x); clang_analyzer_express(y); clang_analyzer_eval(x < y); }
void overflow(signed char n, signed char m) {
if (n + 0 > m + 0) {
clang_analyzer_eval(n - 126 == m + 3); }
}
int mixed_integer_types(int x, int y) {
short a = x - 1U;
return a - y;
}
unsigned gu(void);
unsigned fu(void) {
unsigned x = gu();
assert(x <= ((unsigned)UINT_MAX / 4));
return x;
}
void unsigned_concrete_int_no_crash(void) {
unsigned x = fu() + 1U, y = fu() + 1U;
clang_analyzer_denote(x - 1U, "$x");
clang_analyzer_denote(y - 1U, "$y");
clang_analyzer_express(y); clang_analyzer_express(x == y); }