declare ptr @llvm.swift.async.context.addr() declare dllimport swiftcc void @swift_task_dealloc(ptr) local_unnamed_addr declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) define internal swifttailcc void @test(ptr nocapture readonly swiftasync %0) { entryresume.0: %1 = load ptr, ptr %0, align 8 %2 = tail call ptr @llvm.swift.async.context.addr() store ptr %1, ptr %2, align 8 %async.ctx.frameptr = getelementptr inbounds i8, ptr %1, i64 16 %.reload.addr4 = getelementptr inbounds i8, ptr %1, i64 24 %.reload5 = load ptr, ptr %.reload.addr4, align 8 %.reload = load ptr, ptr %async.ctx.frameptr, align 8 %3 = load ptr, ptr %0, align 8 %4 = tail call ptr @llvm.swift.async.context.addr() store ptr %3, ptr %4, align 8 tail call swiftcc void @swift_task_dealloc(ptr nonnull %.reload5) tail call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %.reload5) tail call swiftcc void @swift_task_dealloc(ptr %.reload) %5 = getelementptr inbounds <{ ptr, ptr }>, ptr %3, i64 0, i32 1 %6 = load ptr, ptr %5, align 8 musttail call swifttailcc void %6(ptr swiftasync %3) ret void } test: // @test .seh_proc test // %bb.0: // %entryresume.0 orr x29, x29, #0x1000000000000000 .seh_nop sub sp, sp, #48 .seh_stackalloc 48 str x19, [sp, #16] // 8-byte Folded Spill .seh_save_reg x19, 16 stp x29, x30, [sp, #32] // 16-byte Folded Spill .seh_save_fplr 32 str x22, [sp, #24] .seh_save_reg x22, 24 add x29, sp, #32 .seh_add_fp 32 .seh_endprologue ldr x9, [x22] sub x8, x29, #8 adrp x19, __imp_swift_task_dealloc str x9, [x8] ldr x22, [x22] ldp x20, x0, [x9, #16] str x22, [x8] ldr x19, [x19, :lo12:__imp_swift_task_dealloc] blr x19 mov x0, x20 blr x19 ldr x0, [x22, #8] .seh_startepilogue ldp x29, x30, [sp, #32] // 16-byte Folded Reload .seh_save_fplr 32 ldr x19, [sp, #16] // 8-byte Folded Reload .seh_save_reg x19, 16 and x29, x29, #0xefffffffffffffff .seh_nop add sp, sp, #48 .seh_stackalloc 48 .seh_endepilogue br x0 .seh_endfunclet .seh_endproc // -- End function