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 5 6define dso_local void @normal_call() local_unnamed_addr section "nc_sect" { 7entry: 8 call void @a() 9 call void @a() 10 ret void 11} 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]] 19 20define dso_local void @tail_call() local_unnamed_addr section "tc_sect" { 21entry: 22 tail call void @b() 23 ret void 24} 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]] 30 31declare dllimport void @a() local_unnamed_addr 32declare dllimport void @b() local_unnamed_addr 33 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 49