1; RUN: llc -mtriple aarch64-windows -filetype asm -o - < %s | FileCheck %s 2; RUN: llc -mtriple aarch64-windows -filetype asm -o - -fast-isel %s | FileCheck %s 3; RUN: llc -mtriple aarch64-windows -filetype asm -o - -global-isel -global-isel-abort=0 %s | FileCheck %s 4 5define void @func() { 6; CHECK-LABEL: func: 7; CHECK: str x30, [sp, #-16]! 8; CHECK-NEXT: .seh_save_reg_x x30, 16 9; CHECK-NEXT: .seh_endprologue 10; CHECK-NEXT: adrp x8, .refptr.weakfunc 11; CHECK-NEXT: ldr x8, [x8, .refptr.weakfunc] 12; CHECK-NEXT: cbz x8, .LBB0_2 13; CHECK-NEXT: ; %bb.1: 14; CHECK-NEXT: blr x8 15; CHECK-NEXT: .LBB0_2: 16; CHECK-NEXT: .seh_startepilogue 17; CHECK-NEXT: ldr x30, [sp], #16 18; CHECK-NEXT: .seh_save_reg_x x30, 16 19; CHECK-NEXT: .seh_endepilogue 20; CHECK-NEXT: ret 21 22 br i1 icmp ne (void ()* @weakfunc, void ()* null), label %1, label %2 23 241: 25 call void @weakfunc() 26 br label %2 27 282: 29 ret void 30} 31 32declare extern_weak void @weakfunc() 33