1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2; RUN: llc -mtriple aarch64-windows -filetype asm -o - < %s | FileCheck %s 3; RUN: llc -mtriple aarch64-windows -filetype asm -o - -fast-isel %s | FileCheck %s --check-prefix=FISEL 4; RUN: llc -mtriple aarch64-windows -filetype asm -o - -global-isel -global-isel-abort=0 %s | FileCheck %s 5 6define void @func() nounwind { 7; CHECK-LABEL: func: 8; CHECK: // %bb.0: 9; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill 10; CHECK-NEXT: adrp x8, .refptr.weakfunc 11; CHECK-NEXT: ldr x8, [x8, :lo12:.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: ldr x30, [sp], #16 // 8-byte Folded Reload 17; CHECK-NEXT: ret 18; 19; FISEL-LABEL: func: 20; FISEL: // %bb.0: 21; FISEL-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill 22; FISEL-NEXT: adrp x8, .refptr.weakfunc 23; FISEL-NEXT: ldr x8, [x8, :lo12:.refptr.weakfunc] 24; FISEL-NEXT: cbz x8, .LBB0_2 25; FISEL-NEXT: // %bb.1: 26; FISEL-NEXT: adrp x8, .refptr.weakfunc 27; FISEL-NEXT: ldr x8, [x8, :lo12:.refptr.weakfunc] 28; FISEL-NEXT: blr x8 29; FISEL-NEXT: .LBB0_2: 30; FISEL-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload 31; FISEL-NEXT: ret 32 %cmp = icmp ne ptr @weakfunc, null 33 br i1 %cmp, label %1, label %2 34 351: 36 call void @weakfunc() 37 br label %2 38 392: 40 ret void 41} 42 43declare extern_weak void @weakfunc() 44