1*e47b89d1SHenry Wong // RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c++98 -Wno-deprecated %s 2*e47b89d1SHenry Wong // RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c++11 -Wno-deprecated %s 3*e47b89d1SHenry Wong // RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c++14 -Wno-deprecated %s 4*e47b89d1SHenry Wong 5*e47b89d1SHenry Wong extern void clang_analyzer_eval(bool); 6*e47b89d1SHenry Wong test_bool_value()7*e47b89d1SHenry Wongvoid test_bool_value() { 8*e47b89d1SHenry Wong { 9*e47b89d1SHenry Wong bool b = true; 10*e47b89d1SHenry Wong clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} 11*e47b89d1SHenry Wong } 12*e47b89d1SHenry Wong 13*e47b89d1SHenry Wong { 14*e47b89d1SHenry Wong bool b = false; 15*e47b89d1SHenry Wong clang_analyzer_eval(b == 0); // expected-warning{{TRUE}} 16*e47b89d1SHenry Wong } 17*e47b89d1SHenry Wong 18*e47b89d1SHenry Wong { 19*e47b89d1SHenry Wong bool b = -10; 20*e47b89d1SHenry Wong clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} 21*e47b89d1SHenry Wong } 22*e47b89d1SHenry Wong 23*e47b89d1SHenry Wong { 24*e47b89d1SHenry Wong bool b = 10; 25*e47b89d1SHenry Wong clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} 26*e47b89d1SHenry Wong } 27*e47b89d1SHenry Wong 28*e47b89d1SHenry Wong { 29*e47b89d1SHenry Wong bool b = 10; 30*e47b89d1SHenry Wong b++; 31*e47b89d1SHenry Wong clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} 32*e47b89d1SHenry Wong } 33*e47b89d1SHenry Wong 34*e47b89d1SHenry Wong { 35*e47b89d1SHenry Wong bool b = 0; 36*e47b89d1SHenry Wong b++; 37*e47b89d1SHenry Wong clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} 38*e47b89d1SHenry Wong } 39*e47b89d1SHenry Wong } 40*e47b89d1SHenry Wong test_bool_increment()41*e47b89d1SHenry Wongvoid test_bool_increment() { 42*e47b89d1SHenry Wong { 43*e47b89d1SHenry Wong bool b = true; 44*e47b89d1SHenry Wong b++; 45*e47b89d1SHenry Wong clang_analyzer_eval(b); // expected-warning{{TRUE}} 46*e47b89d1SHenry Wong } 47*e47b89d1SHenry Wong 48*e47b89d1SHenry Wong { 49*e47b89d1SHenry Wong bool b = false; 50*e47b89d1SHenry Wong b++; 51*e47b89d1SHenry Wong clang_analyzer_eval(b); // expected-warning{{TRUE}} 52*e47b89d1SHenry Wong } 53*e47b89d1SHenry Wong 54*e47b89d1SHenry Wong { 55*e47b89d1SHenry Wong bool b = true; 56*e47b89d1SHenry Wong ++b; 57*e47b89d1SHenry Wong clang_analyzer_eval(b); // expected-warning{{TRUE}} 58*e47b89d1SHenry Wong } 59*e47b89d1SHenry Wong 60*e47b89d1SHenry Wong { 61*e47b89d1SHenry Wong bool b = false; 62*e47b89d1SHenry Wong ++b; 63*e47b89d1SHenry Wong clang_analyzer_eval(b); // expected-warning{{TRUE}} 64*e47b89d1SHenry Wong } 65*e47b89d1SHenry Wong 66*e47b89d1SHenry Wong { 67*e47b89d1SHenry Wong bool b = 0; 68*e47b89d1SHenry Wong ++b; 69*e47b89d1SHenry Wong clang_analyzer_eval(b); // expected-warning{{TRUE}} 70*e47b89d1SHenry Wong } 71*e47b89d1SHenry Wong 72*e47b89d1SHenry Wong { 73*e47b89d1SHenry Wong bool b = 10; 74*e47b89d1SHenry Wong ++b; 75*e47b89d1SHenry Wong ++b; 76*e47b89d1SHenry Wong clang_analyzer_eval(b); // expected-warning{{TRUE}} 77*e47b89d1SHenry Wong } 78*e47b89d1SHenry Wong 79*e47b89d1SHenry Wong { 80*e47b89d1SHenry Wong bool b = -10; 81*e47b89d1SHenry Wong ++b; 82*e47b89d1SHenry Wong clang_analyzer_eval(b); // expected-warning{{TRUE}} 83*e47b89d1SHenry Wong } 84*e47b89d1SHenry Wong } 85