// RUN: %clang_analyze_cc1 -verify %s \
// RUN:   -analyzer-checker core,debug.ExprInspection

// Stuff that used to hang.

extern void __assert_fail(__const char *__assertion, __const char *__file,
                          unsigned int __line, __const char *__function)
    __attribute__((__noreturn__));
#define assert(expr) \
  ((expr) ? (void)(0) : __assert_fail(#expr, __FILE__, __LINE__, __func__))

void clang_analyzer_eval(int);

int g(void);

int f(int y) {
  return y + g();
}

int produce_a_very_large_symbol(int x) {
  return f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(
             f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(x))))))))))))))))))))))))))))))));
}

void produce_an_exponentially_exploding_symbol(int x, int y) {
  x += y; y += x + g();
  x += y; y += x + g();
  x += y; y += x + g();
  x += y; y += x + g();
  x += y; y += x + g();
  x += y; y += x + g();
  x += y; y += x + g();
  x += y; y += x + g();
  x += y; y += x + g();
  x += y; y += x + g();
  x += y; y += x + g();
}

void produce_an_exponentially_exploding_symbol_2(int x, int y) {
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  if (x > 1) {
    if (x > 2) {
      if (x > 3) {
        if (x > 4) {
          if (x > 5) {
            if (x > 6) {
              if (x > 7) {
                if (x > 8) {
                  if (x > 9) {
                    if (x > 10) {
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

void produce_an_exponentially_exploding_symbol_3(int x, int y) {
  assert(0 < x && x < 10);
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  x &= y;
  y &= x & g();
  clang_analyzer_eval(0 < x && x < 10); // expected-warning{{TRUE}}
                                        // expected-warning@-1{{FALSE}}
}
