|  | // RUN: %clang_cc1 %s -triple=i686-pc-win32 -fsyntax-only -verify -fms-extensions -Wunreachable-code | 
|  |  | 
|  | void f(); | 
|  |  | 
|  | void g1() { | 
|  | __try { | 
|  | f(); | 
|  | __leave; | 
|  | f();  // expected-warning{{will never be executed}} | 
|  | } __except(1) { | 
|  | f(); | 
|  | } | 
|  |  | 
|  | // Completely empty. | 
|  | __try { | 
|  | } __except(1) { | 
|  | } | 
|  |  | 
|  | __try { | 
|  | f(); | 
|  | return; | 
|  | } __except(1) {  // Filter expression should not be marked as unreachable. | 
|  | // Empty __except body. | 
|  | } | 
|  | } | 
|  |  | 
|  | void g2() { | 
|  | __try { | 
|  | // Nested __try. | 
|  | __try { | 
|  | f(); | 
|  | __leave; | 
|  | f(); // expected-warning{{will never be executed}} | 
|  | } __except(2) { | 
|  | } | 
|  | f(); | 
|  | __leave; | 
|  | f(); // expected-warning{{will never be executed}} | 
|  | } __except(1) { | 
|  | f(); | 
|  | } | 
|  | } | 
|  |  | 
|  | void g3() { | 
|  | __try { | 
|  | __try { | 
|  | f(); | 
|  | } __except (1) { | 
|  | __leave; // should exit outer try | 
|  | } | 
|  | __leave; | 
|  | f(); // expected-warning{{never be executed}} | 
|  | } __except (1) { | 
|  | } | 
|  | } |