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