// 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}} } }