| // RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c++98 -Wno-deprecated %s | 
 | // RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c++11 -Wno-deprecated %s | 
 | // RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c++14 -Wno-deprecated %s | 
 |  | 
 | extern void clang_analyzer_eval(bool); | 
 |  | 
 | void test_bool_value() { | 
 |   { | 
 |     bool b = true; | 
 |     clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = false; | 
 |     clang_analyzer_eval(b == 0); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = -10; | 
 |     clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = 10; | 
 |     clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = 10; | 
 |     b++; | 
 |     clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = 0; | 
 |     b++; | 
 |     clang_analyzer_eval(b == 1); // expected-warning{{TRUE}} | 
 |   } | 
 | } | 
 |  | 
 | void test_bool_increment() { | 
 |   { | 
 |     bool b = true; | 
 |     b++; | 
 |     clang_analyzer_eval(b); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = false; | 
 |     b++; | 
 |     clang_analyzer_eval(b); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = true; | 
 |     ++b; | 
 |     clang_analyzer_eval(b); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = false; | 
 |     ++b; | 
 |     clang_analyzer_eval(b); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = 0; | 
 |     ++b; | 
 |     clang_analyzer_eval(b); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = 10; | 
 |     ++b; | 
 |     ++b; | 
 |     clang_analyzer_eval(b); // expected-warning{{TRUE}} | 
 |   } | 
 |  | 
 |   { | 
 |     bool b = -10; | 
 |     ++b; | 
 |     clang_analyzer_eval(b); // expected-warning{{TRUE}} | 
 |   } | 
 | } |