Skip to content

Commit 5fd5d15

Browse files
author
git apple-llvm automerger
committed
Merge commit '5b22a50e819c' from swift/release/6.1 into stable/20240723
2 parents 4d6407b + 5b22a50 commit 5fd5d15

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
; RUN: llc %s -o - | FileCheck %s
2+
3+
target triple = "x86_64-apple-macosx"
4+
5+
declare swifttailcc void @tc_fn(ptr swiftasync, i64, ptr, i8, ptr swiftself)
6+
7+
declare void @foo()
8+
9+
; FIXME: Currently the return address is written to the stack before loading the
10+
; argument from an aliasing stack slot.
11+
define swifttailcc void @test(ptr %0, ptr swiftasync %1, i64 %2, i64 %3, ptr %4, ptr %5, i64 %6, ptr %7, i8 %8) {
12+
; CHECK-LABEL: test:
13+
; CHECK: ## %bb.0: ## %entry
14+
; CHECK-NEXT: pushq %r15
15+
; CHECK-NEXT: .cfi_def_cfa_offset 16
16+
; CHECK-NEXT: pushq %rbx
17+
; CHECK-NEXT: .cfi_def_cfa_offset 24
18+
; CHECK-NEXT: pushq %rax
19+
; CHECK-NEXT: .cfi_def_cfa_offset 32
20+
; CHECK-NEXT: .cfi_offset %rbx, -24
21+
; CHECK-NEXT: .cfi_offset %r15, -16
22+
; CHECK-NEXT: movq %r9, %r13
23+
; CHECK-NEXT: movq %r8, %rbx
24+
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r15
25+
; CHECK-NEXT: callq _foo
26+
; CHECK-NEXT: movq %r14, (%rax)
27+
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rcx
28+
; CHECK-NEXT: movq %rcx, [[OFF:[0-9]+]](%rsp)
29+
; CHECK-NEXT: movl [[OFF]](%rsp), %edx
30+
; CHECK-NEXT: movq %rax, %r14
31+
; CHECK-NEXT: movq %r13, %rdi
32+
; CHECK-NEXT: movq %r15, %rsi
33+
; CHECK-NEXT: movq %rbx, %r13
34+
; CHECK-NEXT: addq $8, %rsp
35+
; CHECK-NEXT: popq %rbx
36+
; CHECK-NEXT: popq %r15
37+
; CHECK-NEXT: addq $16, %rsp
38+
; CHECK-NEXT: jmp _tc_fn ## TAILCALL
39+
entry:
40+
%res = tail call ptr @foo()
41+
store ptr %1, ptr %res, align 8
42+
musttail call swifttailcc void @tc_fn(ptr swiftasync %res, i64 %6, ptr %7, i8 %8, ptr swiftself %5)
43+
ret void
44+
}

0 commit comments

Comments
 (0)