Skip to content

Commit 285737e

Browse files
Use musttail in MergeFunctions for swiftasync->swiftasync tail calls.
Fixes rdar://76024125.
1 parent a2b8bfb commit 285737e

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
@@ -713,7 +713,11 @@ void MergeFunctions::writeThunk(Function *F, Function *G) {
713713

714714
CallInst *CI = Builder.CreateCall(F, Args);
715715
ReturnInst *RI = nullptr;
716-
CI->setTailCall();
716+
bool isSwiftTailCall =
717+
F->getCallingConv() == CallingConv::SwiftTail &&
718+
G->getCallingConv() == CallingConv::SwiftTail;
719+
CI->setTailCallKind(
720+
isSwiftTailCall ? llvm::CallInst::TCK_MustTail : llvm::CallInst::TCK_Tail);
717721
CI->setCallingConv(F->getCallingConv());
718722
CI->setAttributes(F->getAttributes());
719723
if (H->getReturnType()->isVoidTy()) {

0 commit comments

Comments
 (0)