forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			27 lines
		
	
	
		
			851 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			851 B
		
	
	
	
		
			C
		
	
	
	
| // RUN: %clang_cc1 %s -triple x86_64-pc-win32 -fms-extensions -emit-llvm -o - \
 | |
| // RUN:         | FileCheck %s
 | |
| // RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - \
 | |
| // RUN:         | FileCheck %s
 | |
| // RUN: %clang_cc1 %s -triple aarch64-windows -fms-extensions -emit-llvm -o - \
 | |
| // RUN:         | FileCheck %s
 | |
| 
 | |
| // Check that the first finally block passes the enclosing function's frame
 | |
| // pointer to the second finally block, instead of generating it via localaddr.
 | |
| 
 | |
| // CHECK-LABEL: define internal void @"?fin$0@0@main@@"({{i8( zeroext)?}} %abnormal_termination, i8* %frame_pointer)
 | |
| // CHECK: call void @"?fin$1@0@main@@"({{i8( zeroext)?}} 0, i8* %frame_pointer)
 | |
| int
 | |
| main() {
 | |
|   int Check = 0;
 | |
|   __try {
 | |
|     Check = 3;
 | |
|   } __finally {
 | |
|     __try {
 | |
|       Check += 2;
 | |
|     } __finally {
 | |
|       Check += 4;
 | |
|     }
 | |
|   }
 | |
|   return Check;
 | |
| }
 |