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