brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 75e7ac9 Raw
60 lines · plain
1; RUN: llc < %s -mtriple=arm64ec-pc-windows-msvc | FileCheck %s2 3declare void @called()4declare void @escaped()5define void @f(ptr %dst, ptr readonly %f) {6  call void @called()7; CHECK:         bl      "#called"8  store ptr @escaped, ptr %dst9  call void %f()10; CHECK:       adrp    x10, $iexit_thunk$cdecl$v$v11; CHECK-NEXT:  add     x10, x10, :lo12:$iexit_thunk$cdecl$v$v12; CHECK-NEXT:  str     x8, [x20]13; CHECK-NEXT:  adrp    x8, __os_arm64x_check_icall_cfg14; CHECK-NEXT:  ldr     x8, [x8, :lo12:__os_arm64x_check_icall_cfg]15; CHECK-NEXT:  mov     x11,16; CHECK-NEXT:  blr     x817; CHECK-NEXT:  blr     x1118    ret void19}20 21; CHECK-LABEL:    .def "#called$exit_thunk";22; CHECK-NEXT:     .scl 2;23; CHECK-NEXT:     .type 32;24; CHECK-NEXT:     .endef25; CHECK-NEXT:     .section .wowthk$aa,"xr",discard,"#called$exit_thunk"26; CHECK-NEXT:     .globl "#called$exit_thunk"            // -- Begin function #called$exit_thunk27; CHECK-NEXT:     .p2align 228; CHECK-NEXT: "#called$exit_thunk":                   // @"#called$exit_thunk"29; CHECK-NEXT:     .weak_anti_dep called30; CHECK-NEXT: called = "#called"31; CHECK-NEXT:     .weak_anti_dep "#called"32; CHECK-NEXT: "#called" = "#called$exit_thunk"33; CHECK-NEXT:    .seh_proc "#called$exit_thunk"34; CHECK-NEXT: // %bb.0:35; CHECK-NEXT:     str x30, [sp, #-16]!                // 8-byte Folded Spill36; CHECK-NEXT:     .seh_save_reg_x x30, 1637; CHECK-NEXT:     .seh_endprologue38; CHECK-NEXT:     adrp x8, __os_arm64x_check_icall39; CHECK-NEXT:     adrp x11, called40; CHECK-NEXT:     add x11, x11, :lo12:called41; CHECK-NEXT:     ldr x8, [x8, :lo12:__os_arm64x_check_icall]42; CHECK-NEXT:     adrp x10, $iexit_thunk$cdecl$v$v43; CHECK-NEXT:     add x10, x10, :lo12:$iexit_thunk$cdecl$v$v44; CHECK-NEXT:     blr x845; CHECK-NEXT:     .seh_startepilogue46; CHECK-NEXT:     ldr x30, [sp], #16                  // 8-byte Folded Reload47; CHECK-NEXT:     .seh_save_reg_x x30, 1648; CHECK-NEXT:     .seh_endepilogue49; CHECK-NEXT:     br x1150; CHECK-NEXT:     .seh_endfunclet51; CHECK-NEXT:     .seh_endproc52 53!llvm.module.flags = !{!0}54!0 = !{i32 2, !"cfguard", i32 2}55 56; CHECK-LABEL: .section .gfids$y,"dr"57; CHECK-NEXT:  .symidx escaped58; CHECK-NEXT:  .symidx $iexit_thunk$cdecl$v$v59; CHECK-NOT:   .symidx60