brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 64a01a9 Raw
75 lines · c
1// RUN: %clang_analyze_cc1 %s \2// RUN:   -analyzer-checker=core,debug.ExprInspection \3// RUN:   -analyzer-config eagerly-assume=false \4// RUN:   -verify5 6void clang_analyzer_eval(int);7void clang_analyzer_dump(int);8 9int test(int x, int y) {10 11  clang_analyzer_dump(-x);       // expected-warning{{-reg_$0<int x>}}12  clang_analyzer_dump(~x);       // expected-warning{{~reg_$0<int x>}}13  int z = x + y;14  clang_analyzer_dump(-z);       // expected-warning{{-((reg_$0<int x>) + (reg_$3<int y>))}}15  clang_analyzer_dump(-(x + y)); // expected-warning{{-((reg_$0<int x>) + (reg_$3<int y>))}}16  clang_analyzer_dump(-x + y);   // expected-warning{{(-reg_$0<int x>) + (reg_$3<int y>)}}17 18  if (-x == 0) {19    clang_analyzer_eval(-x == 0); // expected-warning{{TRUE}}20    clang_analyzer_eval(-x > 0);  // expected-warning{{FALSE}}21    clang_analyzer_eval(-x < 0);  // expected-warning{{FALSE}}22  }23  if (~y == 0) {24    clang_analyzer_eval(~y == 0); // expected-warning{{TRUE}}25    clang_analyzer_eval(~y > 0);  // expected-warning{{FALSE}}26    clang_analyzer_eval(~y < 0);  // expected-warning{{FALSE}}27  }28  (void)(x);29  return 42;30}31 32void test_svalbuilder_simplification_add(int x, int y) {33  if (x + y != 3)34    return;35  clang_analyzer_eval(-(x + y) == -3); // expected-warning{{TRUE}}36  clang_analyzer_eval(-(y + x) == -3); // expected-warning{{TRUE}}37}38 39void test_svalbuilder_simplification_mul(int x, int y) {40  if (x * y != 3)41    return;42  clang_analyzer_eval(-(x * y) == -3); // expected-warning{{TRUE}}43  clang_analyzer_eval(-(y * x) == -3); // expected-warning{{TRUE}}44}45 46void test_svalbuilder_simplification_and(int x, int y) {47  if ((x & y) != 3)48    return;49  clang_analyzer_eval(-(x & y) == -3); // expected-warning{{TRUE}}50  clang_analyzer_eval(-(y & x) == -3); // expected-warning{{TRUE}}51}52 53void test_svalbuilder_simplification_or(int x, int y) {54  if ((x | y) != 3)55    return;56  clang_analyzer_eval(-(x | y) == -3); // expected-warning{{TRUE}}57  clang_analyzer_eval(-(y | x) == -3); // expected-warning{{TRUE}}58}59 60void test_svalbuilder_simplification_xor(int x, int y) {61  if ((x ^ y) != 3)62    return;63  clang_analyzer_eval(-(x ^ y) == -3); // expected-warning{{TRUE}}64  clang_analyzer_eval(-(y ^ x) == -3); // expected-warning{{TRUE}}65}66 67int test_fp(int flag) {68  int value;69  if (flag == 0)70    value = 1;71  if (-flag == 0)72    return value; // no-warning73  return 42;74}75