|
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