| ; 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 |