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
 |