[llvm] [aarch64][win] Add support for import call optimization (equivalent to MSVC /d2ImportCallOptimization) (PR #121516)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 2 17:33:19 PST 2025
================
@@ -0,0 +1,62 @@
+// RUN: llvm-mc -triple aarch64-windows-msvc -filetype obj -o %t.obj %s
+// RUN: llvm-readobj --sections --sd --relocs %t.obj | FileCheck %s
+
+.section nc_sect,"xr"
+normal_call:
+ str x30, [sp, #-16]! // 8-byte Folded Spill
+ adrp x8, __imp_a
+ ldr x8, [x8, :lo12:__imp_a]
+ .impcall __imp_a
+ blr x8
+ ldr x30, [sp], #16 // 8-byte Folded Reload
+ ret
+
+.section tc_sect,"xr"
+tail_call:
+ adrp x8, __imp_b
+ ldr x8, [x8, :lo12:__imp_b]
+ .impcall __imp_b
+ br x8
+
+.section .impcall,"yi"
+.asciz "Imp_Call_V1"
+
+// CHECK-LABEL: Name: .impcall (2E 69 6D 70 63 61 6C 6C)
+// CHECK-NEXT: VirtualSize: 0x0
+// CHECK-NEXT: VirtualAddress: 0x0
+// CHECK-NEXT: RawDataSize: 52
+// CHECK-NEXT: PointerToRawData: 0x150
+// CHECK-NEXT: PointerToRelocations: 0x0
+// CHECK-NEXT: PointerToLineNumbers: 0x0
+// CHECK-NEXT: RelocationCount: 0
+// CHECK-NEXT: LineNumberCount: 0
+// CHECK-NEXT: Characteristics [ (0x100200)
+// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES (0x100000)
+// CHECK-NEXT: IMAGE_SCN_LNK_INFO (0x200)
+// CHECK-NEXT: ]
+// CHECK-NEXT: SectionData (
+// CHECK-NEXT: 0000: 496D705F 43616C6C 5F563100 14000000 |Imp_Call_V1.....|
+// CHECK-NEXT: 0010:
+// CHECK-SAME: [[#%.2X,NCSECT:]]000000
+// CHECK-SAME: 13000000
+// CHECK-SAME: [[#%.2X,NCOFFSET:]]000000
+// CHECK-SAME: [[#%.2X,NCSYM:]]000000
+// CHECK-NEXT: 0020:
+// CHECK-SAME: 14000000
+// CHECK-SAME: [[#%.2X,TCSECT:]]000000
+// CHECK-SAME: 13000000
+// CHECK-SAME: [[#%.2X,TCOFFSET:]]000000
+// CHECK-NEXT: 0030:
+// CHECK-SAME: [[#%.2X,TCSYM:]]000000
+// CHECK-NEXT: )
+
+// CHECK-LABEL: Relocations [
+// CHECK-NEXT: Section ([[#%u,NCSECT]]) nc_sect {
+// CHECK-NEXT: 0x[[#%x,NCOFFSET - 8]] IMAGE_REL_ARM64_PAGEBASE_REL21 __imp_a ([[#%u,NCSYM]])
+// CHECK-NEXT: 0x[[#%x,NCOFFSET - 4]] IMAGE_REL_ARM64_PAGEOFFSET_12L __imp_a ([[#%u,NCSYM]])
+// CHECK-NEXT: }
+// CHECK-NEXT: Section ([[#%u,TCSECT]]) tc_sect {
+// CHECK-NEXT: 0x[[#%x,TCOFFSET - 8]] IMAGE_REL_ARM64_PAGEBASE_REL21 __imp_b ([[#%u,TCSYM]])
+// CHECK-NEXT: 0x[[#%x,TCOFFSET - 4]] IMAGE_REL_ARM64_PAGEOFFSET_12L __imp_b ([[#%u,TCSYM]])
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
----------------
arsenm wrote:
End of file whitespace error
https://github.com/llvm/llvm-project/pull/121516
More information about the llvm-commits
mailing list