Skip to content

Commit 422c1ec

Browse files
varungandhi-appleetcwilde
authored andcommitted
Use musttail in MergeFunctions for swiftasync->swiftasync tail calls.
Fixes rdar://76024125.
1 parent 730b8d1 commit 422c1ec

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

llvm/lib/Transforms/IPO/MergeFunctions.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,11 @@ void MergeFunctions::writeThunk(Function *F, Function *G) {
709709

710710
CallInst *CI = Builder.CreateCall(F, Args);
711711
ReturnInst *RI = nullptr;
712-
CI->setTailCall();
712+
bool isSwiftTailCall =
713+
F->getCallingConv() == CallingConv::SwiftTail &&
714+
G->getCallingConv() == CallingConv::SwiftTail;
715+
CI->setTailCallKind(
716+
isSwiftTailCall ? llvm::CallInst::TCK_MustTail : llvm::CallInst::TCK_Tail);
713717
CI->setCallingConv(F->getCallingConv());
714718
CI->setAttributes(F->getAttributes());
715719
if (H->getReturnType()->isVoidTy()) {

0 commit comments

Comments
 (0)