xref: /llvm-project/llvm/test/CodeGen/X86/swifttail-async.ll (revision 2f448bf509432c1a19ec46ab8cbc7353c03c6280)
1; RUN: llc -mtriple=x86_64-apple-darwin %s -o - | FileCheck %s
2
3
4declare swifttailcc void @swifttail_callee()
5define swifttailcc void @swifttail() {
6; CHECK-LABEL: swifttail:
7; CHECK-NOT: popq %r14
8  call void asm "","~{r14}"()
9  tail call swifttailcc void @swifttail_callee()
10  ret void
11}
12
13define swifttailcc void @no_preserve_swiftself() {
14; CHECK-LABEL: no_preserve_swiftself:
15; CHECK-NOT: popq %r13
16  call void asm "","~{r13}"()
17  ret void
18}
19
20declare swifttailcc ptr @SwiftSelf(ptr swiftasync %context, ptr swiftself %closure)
21define swiftcc ptr @CallSwiftSelf(ptr swiftself %closure, ptr %context) {
22; CHECK-LABEL: CallSwiftSelf:
23; CHECK: pushq %r13
24  ;call void asm "","~{r13}"() ; We get a push r13 but why not with the call
25  ; below?
26  %res = call swifttailcc ptr @SwiftSelf(ptr swiftasync %context, ptr swiftself %closure)
27  ret ptr %res
28}
29