28 lines
		
	
	
		
			694 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			694 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc -mtriple=x86_64-pc-windows-msvc -code-model=large -relocation-model=static -o - < %s | FileCheck %s
 | |
| 
 | |
| declare i32 @__CxxFrameHandler3(...)
 | |
| 
 | |
| declare void @bar()
 | |
| 
 | |
| define void @foo() personality i32 (...)* @__CxxFrameHandler3 {
 | |
| entry:
 | |
|   invoke void @bar()
 | |
|     to label %exit unwind label %cleanup
 | |
| cleanup:
 | |
|   %c = cleanuppad within none []
 | |
|   call void @bar() [ "funclet"(token %c) ]
 | |
|   cleanupret from %c unwind to caller
 | |
| exit:
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| ; CHECK: foo: # @foo
 | |
| ; CHECK: movabsq $bar, %[[reg:[^ ]*]]
 | |
| ; CHECK: callq *%[[reg]]
 | |
| ; CHECK: retq
 | |
| 
 | |
| ; CHECK: "?dtor$2@?0?foo@4HA":
 | |
| ; CHECK: movabsq $bar, %[[reg:[^ ]*]]
 | |
| ; CHECK: callq *%[[reg]]
 | |
| ; CHECK: retq                            # CLEANUPRET
 |