[llvm] 8d4d85d - Revert "[Coroutines] Always set the calling convention of generated resuming call from 'llvm.coro.await.suspend.handle' as fast"
Chuanqi Xu via llvm-commits
llvm-commits at lists.llvm.org
Thu May 23 03:32:34 PDT 2024
Author: Chuanqi Xu
Date: 2024-05-23T18:31:55+08:00
New Revision: 8d4d85de1eeb23bc13a51bffbc12d9f158ca1921
URL: https://github.com/llvm/llvm-project/commit/8d4d85de1eeb23bc13a51bffbc12d9f158ca1921
DIFF: https://github.com/llvm/llvm-project/commit/8d4d85de1eeb23bc13a51bffbc12d9f158ca1921.diff
LOG: Revert "[Coroutines] Always set the calling convention of generated resuming call from 'llvm.coro.await.suspend.handle' as fast"
This reverts commit 31f1590e4fb324c43dc36199587c453e27b6f6fa.
It looks like some bots are not happy about the FileChecks
Added:
Modified:
llvm/lib/Transforms/Coroutines/CoroSplit.cpp
Removed:
llvm/test/Transforms/Coroutines/coro-await-suspend-handle-in-ramp.ll
################################################################################
diff --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
index 5a58a99d2879e..1d9cf185b75a7 100644
--- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
@@ -227,7 +227,6 @@ static void lowerAwaitSuspend(IRBuilder<> &Builder, CoroAwaitSuspendInst *CB,
FunctionType *ResumeTy = FunctionType::get(
Type::getVoidTy(Ctx), PointerType::getUnqual(Ctx), false);
auto *ResumeCall = Builder.CreateCall(ResumeTy, ResumeAddr, {NewCall});
- ResumeCall->setCallingConv(CallingConv::Fast);
// We can't insert the 'ret' instruction and adjust the cc until the
// function has been split, so remember this for later.
@@ -1089,6 +1088,7 @@ void CoroCloner::create() {
// Turn symmetric transfers into musttail calls.
for (CallInst *ResumeCall : Shape.SymmetricTransfers) {
ResumeCall = cast<CallInst>(VMap[ResumeCall]);
+ ResumeCall->setCallingConv(NewF->getCallingConv());
if (TTI.supportsTailCallFor(ResumeCall)) {
// FIXME: Could we support symmetric transfer effectively without
// musttail?
diff --git a/llvm/test/Transforms/Coroutines/coro-await-suspend-handle-in-ramp.ll b/llvm/test/Transforms/Coroutines/coro-await-suspend-handle-in-ramp.ll
deleted file mode 100644
index 85e8bb52fee35..0000000000000
--- a/llvm/test/Transforms/Coroutines/coro-await-suspend-handle-in-ramp.ll
+++ /dev/null
@@ -1,59 +0,0 @@
-; Tests lowerings of
diff erent versions of coro.await.suspend
-; RUN: opt < %s -passes='module(coro-early),cgscc(coro-split),simplifycfg' -S | FileCheck %s
-
-%Awaiter = type {}
-
-define void @f() presplitcoroutine {
-entry:
- %awaiter = alloca %Awaiter
- %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)
- %size = call i32 @llvm.coro.size.i32()
- %alloc = call ptr @malloc(i32 %size)
- %hdl = call ptr @llvm.coro.begin(token %id, ptr %alloc)
- call void @llvm.coro.await.suspend.handle(ptr %awaiter, ptr %hdl, ptr @await_suspend_wrapper_handle)
- %suspend.init = call i8 @llvm.coro.suspend(token none, i1 false)
- switch i8 %suspend.init, label %ret [
- i8 0, label %step
- i8 1, label %cleanup
- ]
-
-; Check the calling convention for resuming function is fastcc
-; CHECK: define {{[^@]*}} @f()
-; CHECK: entry:
-; CHECK: %[[NEXT_HDL:.+]] = call ptr @await_suspend_wrapper_handle(
-; CHECK-NEXT: %[[CONT:.+]] = call ptr @llvm.coro.subfn.addr(ptr %[[NEXT_HDL]], i8 0)
-; CHECK-NEXT: musttail call fastcc void %[[CONT]](ptr %[[NEXT_HDL]])
-step:
- br label %cleanup
-
-cleanup:
- %mem = call ptr @llvm.coro.free(token %id, ptr %hdl)
- call void @free(ptr %mem)
- br label %ret
-
-ret:
- call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
- ret void
-}
-
-; check that we were haven't accidentally went out of @f body
-; CHECK-LABEL: @f.resume(
-; CHECK-LABEL: @f.destroy(
-; CHECK-LABEL: @f.cleanup(
-
-declare ptr @await_suspend_wrapper_handle(ptr, ptr)
-
-declare ptr @llvm.coro.free(token, ptr)
-declare i32 @llvm.coro.size.i32()
-declare i8 @llvm.coro.suspend(token, i1)
-declare void @llvm.coro.resume(ptr)
-declare void @llvm.coro.destroy(ptr)
-
-declare token @llvm.coro.id(i32, ptr, ptr, ptr)
-declare i1 @llvm.coro.alloc(token)
-declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.await.suspend.handle(ptr, ptr, ptr)
-declare i1 @llvm.coro.end(ptr, i1, token)
-
-declare noalias ptr @malloc(i32)
-declare void @free(ptr)
More information about the llvm-commits
mailing list