blob: 64c4a871647f1f8f508cbb1b1543a626060f49d6 [file] [log] [blame]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=arm64ec-pc-windows-msvc %s -o - | FileCheck %s
define dso_local i32 @test() #0 personality ptr @__C_specific_handler {
; CHECK-LABEL: "#test"
; CHECK: .Lfunc_begin0:
; CHECK-NEXT: .seh_proc "#test"
; CHECK-NEXT: .seh_handler "#__C_specific_handler", @unwind, @except
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: sub sp, sp, #48
; CHECK-NEXT: .seh_stackalloc 48
; CHECK-NEXT: stp x29, x30, [sp, #16] // 16-byte Folded Spill
; CHECK-NEXT: .seh_save_fplr 16
; CHECK-NEXT: add x29, sp, #16
; CHECK-NEXT: .seh_add_fp 16
; CHECK-NEXT: .seh_endprologue
; CHECK-NEXT: mov x0, #-2 // =0xfffffffffffffffe
; CHECK-NEXT: mov w8, #-1 // =0xffffffff
; CHECK-NEXT: stur x0, [x29, #16]
; CHECK-NEXT: stur w8, [x29, #-4]
; CHECK-NEXT: .Ltmp0:
; CHECK-NEXT: bl "#ext"
; CHECK-NEXT: .Ltmp1:
; CHECK-NEXT: .LBB0_1:
; CHECK-NEXT: stur w0, [x29, #-4]
; CHECK-NEXT: .seh_startepilogue
; CHECK-NEXT: ldp x29, x30, [sp, #16] // 16-byte Folded Reload
; CHECK-NEXT: .seh_save_fplr 16
; CHECK-NEXT: add sp, sp, #48
; CHECK-NEXT: .seh_stackalloc 48
; CHECK-NEXT: .seh_endepilogue
; CHECK-NEXT: ret
; CHECK-NEXT: .LBB0_2:
; CHECK-NEXT: $ehgcr_0_2:
; CHECK-NEXT: mov w0, wzr
; CHECK-NEXT: b .LBB0_1
%1 = alloca i32, align 4
%2 = alloca i32, align 4
store i32 -1, ptr %1, align 4
%3 = invoke i32 @ext() #3
to label %12 unwind label %4
4: ; preds = %0
%5 = catchswitch within none [label %6] unwind to caller
6: ; preds = %4
%7 = catchpad within %5 [ptr null]
catchret from %7 to label %8
8: ; preds = %6
store i32 0, ptr %1, align 4
br label %10
10: ; preds = %8, %12
%11 = load i32, ptr %1, align 4
ret i32 %11
12: ; preds = %0
store i32 %3, ptr %1, align 4
br label %10
}
declare dso_local i32 @ext() #1
declare dso_local i32 @__C_specific_handler(...)