; 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 ptr @__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 |