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