|
1 | | -; RUN: llc -mtriple=aarch64-pc-windows-msvc -aarch64-win-import-call-optimization < %s | FileCheck %s --check-prefix=CHECK-ENABLED |
2 | | -; RUN: llc -mtriple=aarch64-pc-windows-msvc < %s | FileCheck %s --check-prefix=CHECK-DISABLED |
3 | | - |
4 | | -; CHECK-DISABLED-NOT: .section .impcall |
| 1 | +; RUN: llc -mtriple=aarch64-pc-windows-msvc < %s | FileCheck %s --check-prefix=CHECK |
5 | 2 |
|
6 | 3 | define dso_local void @normal_call() local_unnamed_addr section "nc_sect" { |
7 | 4 | entry: |
8 | 5 | call void @a() |
9 | 6 | call void @a() |
10 | 7 | ret void |
11 | 8 | } |
12 | | -; CHECK-ENABLED-LABEL: normal_call: |
13 | | -; CHECK-ENABLED: adrp [[ADRPREG:x[0-9]+]], __imp_a |
14 | | -; CHECK-ENABLED-NEXT: ldr [[LDRREG:x[0-9]+]], [[[ADRPREG]], :lo12:__imp_a] |
15 | | -; CHECK-ENABLED-NEXT: .Limpcall0: |
16 | | -; CHECK-ENABLED-NEXT: blr [[LDRREG]] |
17 | | -; CHECK-ENABLED-NEXT: .Limpcall1: |
18 | | -; CHECK-ENABLED-NEXT: blr [[LDRREG]] |
| 9 | +; CHECK-LABEL: normal_call: |
| 10 | +; CHECK: adrp [[ADRPREG:x[0-9]+]], __imp_a |
| 11 | +; CHECK-NEXT: ldr [[LDRREG:x[0-9]+]], [[[ADRPREG]], :lo12:__imp_a] |
| 12 | +; CHECK-NEXT: .Limpcall0: |
| 13 | +; CHECK-NEXT: blr [[LDRREG]] |
| 14 | +; CHECK-NEXT: .Limpcall1: |
| 15 | +; CHECK-NEXT: blr [[LDRREG]] |
19 | 16 |
|
20 | 17 | define dso_local void @tail_call() local_unnamed_addr section "tc_sect" { |
21 | 18 | entry: |
22 | 19 | tail call void @b() |
23 | 20 | ret void |
24 | 21 | } |
25 | | -; CHECK-ENABLED-LABEL: tail_call: |
26 | | -; CHECK-ENABLED: adrp [[ADRPREG:x[0-9]+]], __imp_b |
27 | | -; CHECK-ENABLED-NEXT: ldr [[LDRREG:x[0-9]+]], [[[ADRPREG]], :lo12:__imp_b] |
28 | | -; CHECK-ENABLED-NEXT: .Limpcall2: |
29 | | -; CHECK-ENABLED-NEXT: br [[LDRREG]] |
| 22 | +; CHECK-LABEL: tail_call: |
| 23 | +; CHECK: adrp [[ADRPREG:x[0-9]+]], __imp_b |
| 24 | +; CHECK-NEXT: ldr [[LDRREG:x[0-9]+]], [[[ADRPREG]], :lo12:__imp_b] |
| 25 | +; CHECK-NEXT: .Limpcall2: |
| 26 | +; CHECK-NEXT: br [[LDRREG]] |
30 | 27 |
|
31 | 28 | declare dllimport void @a() local_unnamed_addr |
32 | 29 | declare dllimport void @b() local_unnamed_addr |
33 | 30 |
|
34 | | -; CHECK-ENABLED-LABEL .section .impcall,"yi" |
35 | | -; CHECK-ENABLED-NEXT .asciz "Imp_Call_V1" |
36 | | -; CHECK-ENABLED-NEXT .word 32 |
37 | | -; CHECK-ENABLED-NEXT .secnum nc_sect |
38 | | -; CHECK-ENABLED-NEXT .word 19 |
39 | | -; CHECK-ENABLED-NEXT .secoffset .Limpcall0 |
40 | | -; CHECK-ENABLED-NEXT .symidx __imp_a |
41 | | -; CHECK-ENABLED-NEXT .word 19 |
42 | | -; CHECK-ENABLED-NEXT .secoffset .Limpcall1 |
43 | | -; CHECK-ENABLED-NEXT .symidx __imp_a |
44 | | -; CHECK-ENABLED-NEXT .word 20 |
45 | | -; CHECK-ENABLED-NEXT .secnum tc_sect |
46 | | -; CHECK-ENABLED-NEXT .word 19 |
47 | | -; CHECK-ENABLED-NEXT .secoffset .Limpcall2 |
48 | | -; CHECK-ENABLED-NEXT .symidx __imp_b |
| 31 | +; CHECK-LABEL .section .impcall,"yi" |
| 32 | +; CHECK-NEXT .asciz "Imp_Call_V1" |
| 33 | +; CHECK-NEXT .word 32 |
| 34 | +; CHECK-NEXT .secnum nc_sect |
| 35 | +; CHECK-NEXT .word 19 |
| 36 | +; CHECK-NEXT .secoffset .Limpcall0 |
| 37 | +; CHECK-NEXT .symidx __imp_a |
| 38 | +; CHECK-NEXT .word 19 |
| 39 | +; CHECK-NEXT .secoffset .Limpcall1 |
| 40 | +; CHECK-NEXT .symidx __imp_a |
| 41 | +; CHECK-NEXT .word 20 |
| 42 | +; CHECK-NEXT .secnum tc_sect |
| 43 | +; CHECK-NEXT .word 19 |
| 44 | +; CHECK-NEXT .secoffset .Limpcall2 |
| 45 | +; CHECK-NEXT .symidx __imp_b |
| 46 | + |
| 47 | +!llvm.module.flags = !{!0} |
| 48 | +!0 = !{i32 1, !"import-call-optimization", i32 1} |
0 commit comments