forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			56 lines
		
	
	
		
			919 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			919 B
		
	
	
	
		
			C
		
	
	
	
| // 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) {
 | |
|   }
 | |
| }
 |