// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -Wunreachable-code-aggressive -fblocks -verify %s

int j;
int bar();
int test1() {
  for (int i = 0;
       i != 10;
       ++i) {  // expected-warning {{loop will run at most once (loop increment never executed)}}
    if (j == 23) // missing {}'s
      bar();
      return 1;
  }
  return 0;
  return 1; // expected-warning {{will never be executed}}
}

int test1_B() {
  for (int i = 0;
       i != 10;
       ++i) {  // expected-warning {{loop will run at most once (loop increment never executed)}}
    if (j == 23) // missing {}'s
      bar();
      return 1;
  }
  return 0;
  return bar(); // expected-warning {{will never be executed}}
}

void test2(int i) {
  switch (i) {
  case 0:
    break;
    bar();     // expected-warning {{will never be executed}}
  case 2:
    switch (i) {
    default:
    a: goto a;
    }
    bar();     // expected-warning {{will never be executed}}
  }
  b: goto b;
  bar();       // expected-warning {{will never be executed}}
}

void test3() {
  ^{ return;
     bar();    // expected-warning {{will never be executed}}
  }();
  while (++j) {
    continue;
    bar();     // expected-warning {{will never be executed}}
  }
}

// PR 6130 - Don't warn about bogus unreachable code with throw's and
// temporary objects.
class PR6130 {
public:
  PR6130();
  ~PR6130();
};

int pr6130(unsigned i) {
  switch(i) {
    case 0: return 1;
    case 1: return 2;
    default:
      throw PR6130(); // no-warning
  }
}
