xref: /llvm-project/llvm/test/CodeGen/AArch64/windows-extern-weak.ll (revision deab451e7a7f2dff42097049274637052c87eabd)
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