[llvm] a264453 - Revert "Reapply "[Coroutines] Add llvm.coro.is_in_ramp and drop return value of llvm.coro.end #153404"" (#159236)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 16 21:04:17 PDT 2025
Author: Weibo He
Date: 2025-09-17T12:04:13+08:00
New Revision: a2644537505989b227a3bbb19ea8ff6976c1dba7
URL: https://github.com/llvm/llvm-project/commit/a2644537505989b227a3bbb19ea8ff6976c1dba7
DIFF: https://github.com/llvm/llvm-project/commit/a2644537505989b227a3bbb19ea8ff6976c1dba7.diff
LOG: Revert "Reapply "[Coroutines] Add llvm.coro.is_in_ramp and drop return value of llvm.coro.end #153404"" (#159236)
Reverts llvm/llvm-project#155339 because of CI fail
Added:
Modified:
clang/lib/CodeGen/CGCoroutine.cpp
clang/test/CodeGenCoroutines/coro-builtins.c
clang/test/CodeGenCoroutines/coro-eh-cleanup.cpp
clang/test/CodeGenCoroutines/coro-lambda.cpp
clang/test/CodeGenCoroutines/coro-params.cpp
llvm/docs/Coroutines.rst
llvm/include/llvm/IR/Intrinsics.td
llvm/include/llvm/Transforms/Coroutines/CoroInstr.h
llvm/include/llvm/Transforms/Coroutines/CoroShape.h
llvm/lib/Transforms/Coroutines/CoroCleanup.cpp
llvm/lib/Transforms/Coroutines/CoroCloner.h
llvm/lib/Transforms/Coroutines/CoroSplit.cpp
llvm/lib/Transforms/Coroutines/Coroutines.cpp
llvm/test/Analysis/GlobalsModRef/nonescaping-noalias.ll
llvm/test/Assembler/auto_upgrade_intrinsics.ll
llvm/test/Instrumentation/AddressSanitizer/coro-byval-param.ll
llvm/test/Instrumentation/HWAddressSanitizer/coro-byval-param.ll
llvm/test/Transforms/Coroutines/ArgAddr.ll
llvm/test/Transforms/Coroutines/coro-align16.ll
llvm/test/Transforms/Coroutines/coro-align32.ll
llvm/test/Transforms/Coroutines/coro-align64-02.ll
llvm/test/Transforms/Coroutines/coro-align64.ll
llvm/test/Transforms/Coroutines/coro-align8-02.ll
llvm/test/Transforms/Coroutines/coro-align8.ll
llvm/test/Transforms/Coroutines/coro-alloc-with-param-O0.ll
llvm/test/Transforms/Coroutines/coro-alloc-with-param-O2.ll
llvm/test/Transforms/Coroutines/coro-alloca-01.ll
llvm/test/Transforms/Coroutines/coro-alloca-02.ll
llvm/test/Transforms/Coroutines/coro-alloca-03.ll
llvm/test/Transforms/Coroutines/coro-alloca-04.ll
llvm/test/Transforms/Coroutines/coro-alloca-05.ll
llvm/test/Transforms/Coroutines/coro-alloca-06.ll
llvm/test/Transforms/Coroutines/coro-alloca-07.ll
llvm/test/Transforms/Coroutines/coro-alloca-08.ll
llvm/test/Transforms/Coroutines/coro-alloca-09.ll
llvm/test/Transforms/Coroutines/coro-alloca-loop-carried-address.ll
llvm/test/Transforms/Coroutines/coro-alloca-outside-frame.ll
llvm/test/Transforms/Coroutines/coro-alloca-with-addrspace.ll
llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-infinite-loop-bug.ll
llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-start-bug.ll
llvm/test/Transforms/Coroutines/coro-async-coro-id-async-bug.ll
llvm/test/Transforms/Coroutines/coro-async-declaration.ll
llvm/test/Transforms/Coroutines/coro-async-dyn-align.ll
llvm/test/Transforms/Coroutines/coro-async-end-bug.ll
llvm/test/Transforms/Coroutines/coro-async-no-cse-swift-async-context-addr.ll
llvm/test/Transforms/Coroutines/coro-async-nomerge.ll
llvm/test/Transforms/Coroutines/coro-async-phi.ll
llvm/test/Transforms/Coroutines/coro-async.ll
llvm/test/Transforms/Coroutines/coro-await-suspend-handle-in-ramp.ll
llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll
llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll
llvm/test/Transforms/Coroutines/coro-byval-param.ll
llvm/test/Transforms/Coroutines/coro-catchswitch-cleanuppad.ll
llvm/test/Transforms/Coroutines/coro-catchswitch.ll
llvm/test/Transforms/Coroutines/coro-debug-O2.ll
llvm/test/Transforms/Coroutines/coro-debug-coro-frame.ll
llvm/test/Transforms/Coroutines/coro-debug-dbg.values-not_used_in_frame.ll
llvm/test/Transforms/Coroutines/coro-debug-dbg.values.ll
llvm/test/Transforms/Coroutines/coro-debug-frame-variable.ll
llvm/test/Transforms/Coroutines/coro-debug-spill-dbg.declare.ll
llvm/test/Transforms/Coroutines/coro-debug.ll
llvm/test/Transforms/Coroutines/coro-early-twice.ll
llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-00.ll
llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-01.ll
llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-02.ll
llvm/test/Transforms/Coroutines/coro-frame-arrayalloca.ll
llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-00.ll
llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-01.ll
llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-02.ll
llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-03.ll
llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-04.ll
llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-05.ll
llvm/test/Transforms/Coroutines/coro-frame-unreachable.ll
llvm/test/Transforms/Coroutines/coro-frame.ll
llvm/test/Transforms/Coroutines/coro-lifetime-end.ll
llvm/test/Transforms/Coroutines/coro-materialize.ll
llvm/test/Transforms/Coroutines/coro-noalias-param.ll
llvm/test/Transforms/Coroutines/coro-only-destroy-when-complete.ll
llvm/test/Transforms/Coroutines/coro-padding.ll
llvm/test/Transforms/Coroutines/coro-param-copy.ll
llvm/test/Transforms/Coroutines/coro-readnone-02.ll
llvm/test/Transforms/Coroutines/coro-readnone.ll
llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll
llvm/test/Transforms/Coroutines/coro-retcon-alloca.ll
llvm/test/Transforms/Coroutines/coro-retcon-frame.ll
llvm/test/Transforms/Coroutines/coro-retcon-once-private.ll
llvm/test/Transforms/Coroutines/coro-retcon-once-value.ll
llvm/test/Transforms/Coroutines/coro-retcon-once-value2.ll
llvm/test/Transforms/Coroutines/coro-retcon-opaque-ptr.ll
llvm/test/Transforms/Coroutines/coro-retcon-remat.ll
llvm/test/Transforms/Coroutines/coro-retcon-resume-values.ll
llvm/test/Transforms/Coroutines/coro-retcon-resume-values2.ll
llvm/test/Transforms/Coroutines/coro-retcon-unreachable.ll
llvm/test/Transforms/Coroutines/coro-retcon-value.ll
llvm/test/Transforms/Coroutines/coro-retcon.ll
llvm/test/Transforms/Coroutines/coro-spill-after-phi.ll
llvm/test/Transforms/Coroutines/coro-spill-corobegin.ll
llvm/test/Transforms/Coroutines/coro-spill-defs-before-corobegin.ll
llvm/test/Transforms/Coroutines/coro-spill-promise-02.ll
llvm/test/Transforms/Coroutines/coro-spill-promise.ll
llvm/test/Transforms/Coroutines/coro-spill-suspend.ll
llvm/test/Transforms/Coroutines/coro-split-00.ll
llvm/test/Transforms/Coroutines/coro-split-01.ll
llvm/test/Transforms/Coroutines/coro-split-02.ll
llvm/test/Transforms/Coroutines/coro-split-alloc.ll
llvm/test/Transforms/Coroutines/coro-split-dbg-labels-inlined.ll
llvm/test/Transforms/Coroutines/coro-split-dbg-labels.ll
llvm/test/Transforms/Coroutines/coro-split-dbg.ll
llvm/test/Transforms/Coroutines/coro-split-eh-00.ll
llvm/test/Transforms/Coroutines/coro-split-eh-01.ll
llvm/test/Transforms/Coroutines/coro-split-final-suspend.ll
llvm/test/Transforms/Coroutines/coro-split-hidden.ll
llvm/test/Transforms/Coroutines/coro-split-musttail-chain-pgo-counter-promo.ll
llvm/test/Transforms/Coroutines/coro-split-musttail-ppc64le.ll
llvm/test/Transforms/Coroutines/coro-split-musttail.ll
llvm/test/Transforms/Coroutines/coro-split-musttail1.ll
llvm/test/Transforms/Coroutines/coro-split-musttail10.ll
llvm/test/Transforms/Coroutines/coro-split-musttail12.ll
llvm/test/Transforms/Coroutines/coro-split-musttail13.ll
llvm/test/Transforms/Coroutines/coro-split-musttail2.ll
llvm/test/Transforms/Coroutines/coro-split-musttail3.ll
llvm/test/Transforms/Coroutines/coro-split-musttail4.ll
llvm/test/Transforms/Coroutines/coro-split-musttail5.ll
llvm/test/Transforms/Coroutines/coro-split-musttail6.ll
llvm/test/Transforms/Coroutines/coro-split-musttail7.ll
llvm/test/Transforms/Coroutines/coro-split-musttail8.ll
llvm/test/Transforms/Coroutines/coro-split-musttail9.ll
llvm/test/Transforms/Coroutines/coro-split-no-lifetime.ll
llvm/test/Transforms/Coroutines/coro-split-noinline.ll
llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll
llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll
llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-03.ll
llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-04.ll
llvm/test/Transforms/Coroutines/coro-swifterror.ll
llvm/test/Transforms/Coroutines/coro-zero-alloca.ll
llvm/test/Transforms/Coroutines/ex0.ll
llvm/test/Transforms/Coroutines/ex1.ll
llvm/test/Transforms/Coroutines/ex2.ll
llvm/test/Transforms/Coroutines/ex3.ll
llvm/test/Transforms/Coroutines/ex4.ll
llvm/test/Transforms/Coroutines/ex5.ll
llvm/test/Transforms/Coroutines/no-suspend.ll
llvm/test/Transforms/Coroutines/phi-coro-end.ll
llvm/test/Transforms/Coroutines/remarks.ll
llvm/test/Transforms/Coroutines/swift-async-dbg.ll
llvm/test/Transforms/FunctionAttrs/noreturn.ll
llvm/test/Transforms/LICM/sink-with-coroutine.ll
llvm/unittests/Transforms/Coroutines/ExtraRematTest.cpp
mlir/test/Target/LLVMIR/Import/intrinsic.ll
mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CGCoroutine.cpp b/clang/lib/CodeGen/CGCoroutine.cpp
index b76450152203d..827385f9c1a1f 100644
--- a/clang/lib/CodeGen/CGCoroutine.cpp
+++ b/clang/lib/CodeGen/CGCoroutine.cpp
@@ -575,19 +575,17 @@ struct CallCoroEnd final : public EHScopeStack::Cleanup {
llvm::Function *CoroEndFn = CGM.getIntrinsic(llvm::Intrinsic::coro_end);
// See if we have a funclet bundle to associate coro.end with. (WinEH)
auto Bundles = getBundlesForCoroEnd(CGF);
- CGF.Builder.CreateCall(
- CoroEndFn,
- {NullPtr, CGF.Builder.getTrue(),
- llvm::ConstantTokenNone::get(CoroEndFn->getContext())},
- Bundles);
+ auto *CoroEnd =
+ CGF.Builder.CreateCall(CoroEndFn,
+ {NullPtr, CGF.Builder.getTrue(),
+ llvm::ConstantTokenNone::get(CoroEndFn->getContext())},
+ Bundles);
if (Bundles.empty()) {
// Otherwise, (landingpad model), create a conditional branch that leads
// either to a cleanup block or a block with EH resume instruction.
auto *ResumeBB = CGF.getEHResumeBlock(/*isCleanup=*/true);
auto *CleanupContBB = CGF.createBasicBlock("cleanup.cont");
- auto *CoroIsInRampFn = CGM.getIntrinsic(llvm::Intrinsic::coro_is_in_ramp);
- auto *CoroIsInRamp = CGF.Builder.CreateCall(CoroIsInRampFn);
- CGF.Builder.CreateCondBr(CoroIsInRamp, CleanupContBB, ResumeBB);
+ CGF.Builder.CreateCondBr(CoroEnd, ResumeBB, CleanupContBB);
CGF.EmitBlock(CleanupContBB);
}
}
diff --git a/clang/test/CodeGenCoroutines/coro-builtins.c b/clang/test/CodeGenCoroutines/coro-builtins.c
index 0c2553274f09f..79f119b2b60ff 100644
--- a/clang/test/CodeGenCoroutines/coro-builtins.c
+++ b/clang/test/CodeGenCoroutines/coro-builtins.c
@@ -37,7 +37,7 @@ void f(int n) {
// CHECK-NEXT: call ptr @llvm.coro.free(token %[[COROID]], ptr %[[FRAME]])
__builtin_coro_free(__builtin_coro_frame());
- // CHECK-NEXT: call void @llvm.coro.end(ptr %[[FRAME]], i1 false, token none)
+ // CHECK-NEXT: call i1 @llvm.coro.end(ptr %[[FRAME]], i1 false, token none)
__builtin_coro_end(__builtin_coro_frame(), 0);
// CHECK-NEXT: call i8 @llvm.coro.suspend(token none, i1 true)
diff --git a/clang/test/CodeGenCoroutines/coro-eh-cleanup.cpp b/clang/test/CodeGenCoroutines/coro-eh-cleanup.cpp
index 6b61ccde5728b..725cf8faa6b4c 100644
--- a/clang/test/CodeGenCoroutines/coro-eh-cleanup.cpp
+++ b/clang/test/CodeGenCoroutines/coro-eh-cleanup.cpp
@@ -60,7 +60,7 @@ coro_t f() {
// CHECK: [[COROENDBB]]:
// CHECK-NEXT: %[[CLPAD:.+]] = cleanuppad within none
-// CHECK-NEXT: call void @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %[[CLPAD]]) ]
+// CHECK-NEXT: call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %[[CLPAD]]) ]
// CHECK-NEXT: cleanupret from %[[CLPAD]] unwind label
// CHECK-LPAD: @_Z1fv(
@@ -76,8 +76,8 @@ coro_t f() {
// CHECK-LPAD: to label %{{.+}} unwind label %[[UNWINDBB:.+]]
// CHECK-LPAD: [[UNWINDBB]]:
-// CHECK-LPAD: %[[InRamp:.+]] = call i1 @llvm.coro.is_in_ramp()
-// CHECK-LPAD: br i1 %[[InRamp]], label %{{.+}}, label %[[EHRESUME:.+]]
+// CHECK-LPAD: %[[I1RESUME:.+]] = call i1 @llvm.coro.end(ptr null, i1 true, token none)
+// CHECK-LPAD: br i1 %[[I1RESUME]], label %[[EHRESUME:.+]], label
// CHECK-LPAD: [[EHRESUME]]:
// CHECK-LPAD-NEXT: %[[exn:.+]] = load ptr, ptr %exn.slot, align 8
// CHECK-LPAD-NEXT: %[[sel:.+]] = load i32, ptr %ehselector.slot, align 4
diff --git a/clang/test/CodeGenCoroutines/coro-lambda.cpp b/clang/test/CodeGenCoroutines/coro-lambda.cpp
index b24a190ab41fb..26c51070f9e2d 100644
--- a/clang/test/CodeGenCoroutines/coro-lambda.cpp
+++ b/clang/test/CodeGenCoroutines/coro-lambda.cpp
@@ -55,4 +55,4 @@ void f() {
// CHECK: alloca %"struct.Task::promise_type"
// CHECK: call token @llvm.coro.id(
// CHECK: call i8 @llvm.coro.suspend(
-// CHECK: call void @llvm.coro.end(
+// CHECK: call i1 @llvm.coro.end(
diff --git a/clang/test/CodeGenCoroutines/coro-params.cpp b/clang/test/CodeGenCoroutines/coro-params.cpp
index 79e77a21017fa..719726cca29c5 100644
--- a/clang/test/CodeGenCoroutines/coro-params.cpp
+++ b/clang/test/CodeGenCoroutines/coro-params.cpp
@@ -117,7 +117,7 @@ void f(int val, MoveOnly moParam, MoveAndCopy mcParam, TrivialABI trivialParam)
// CHECK-NEXT: call ptr @llvm.coro.free(
// The original trivial_abi parameter is destroyed when returning from the ramp.
- // CHECK: call void @llvm.coro.end
+ // CHECK: call i1 @llvm.coro.end
// CHECK: call void @_ZN10TrivialABID1Ev(ptr {{[^,]*}} %[[TrivialAlloca]])
}
@@ -242,6 +242,6 @@ void msabi(MSParm p) {
co_return;
// The local alloca is used for the destructor call at the end of the ramp.
- // MSABI: call void @llvm.coro.end
+ // MSABI: call i1 @llvm.coro.end
// MSABI: call void @"??1MSParm@@QEAA at XZ"(ptr{{.*}} %[[ParamAlloca]])
}
diff --git a/llvm/docs/Coroutines.rst b/llvm/docs/Coroutines.rst
index 13d2da42eaca7..dde73c9c3cc23 100644
--- a/llvm/docs/Coroutines.rst
+++ b/llvm/docs/Coroutines.rst
@@ -303,7 +303,7 @@ The LLVM IR for this coroutine looks like this:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ %unused = call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret ptr %hdl
}
@@ -637,7 +637,7 @@ store the current value produced by a coroutine.
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ %unused = call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret ptr %hdl
}
@@ -806,7 +806,7 @@ The LLVM IR for a coroutine using a Coroutine with a custom ABI looks like:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ %unused = call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret ptr %hdl
}
@@ -1444,7 +1444,7 @@ A frontend should emit function attribute `presplitcoroutine` for the coroutine.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
- declare void @llvm.coro.end(ptr <handle>, i1 <unwind>, token <result.token>)
+ declare i1 @llvm.coro.end(ptr <handle>, i1 <unwind>, token <result.token>)
Overview:
"""""""""
@@ -1502,9 +1502,8 @@ For landingpad based exception model, it is expected that frontend uses the
.. code-block:: llvm
ehcleanup:
- call void @llvm.coro.end(ptr null, i1 true, token none)
- %InRamp = call i1 @llvm.coro.is_in_ramp()
- br i1 %InRamp, label %cleanup.cont, label %eh.resume
+ %InResumePart = call i1 @llvm.coro.end(ptr null, i1 true, token none)
+ br i1 %InResumePart, label %eh.resume, label %cleanup.cont
cleanup.cont:
; rest of the cleanup
@@ -1516,10 +1515,10 @@ For landingpad based exception model, it is expected that frontend uses the
%lpad.val29 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1
resume { ptr, i32 } %lpad.val29
-The `CoroSpit` pass replaces `coro.is_in_ramp` with ``True`` in the ramp functions,
-thus allowing to proceed to the rest of the cleanup code that is only needed during
-initial invocation of the coroutine. Otherwise, it is replaced with ``False``,
-thus leading to immediate unwind to the caller.
+The `CoroSpit` pass replaces `coro.end` with ``True`` in the resume functions,
+thus leading to immediate unwind to the caller, whereas in start function it
+is replaced with ``False``, thus allowing to proceed to the rest of the cleanup
+code that is only needed during initial invocation of the coroutine.
For Windows Exception handling model, a frontend should attach a funclet bundle
referring to an enclosing cleanuppad as follows:
@@ -1528,7 +1527,7 @@ referring to an enclosing cleanuppad as follows:
ehcleanup:
%tok = cleanuppad within none []
- call void @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %tok) ]
+ %unused = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %tok) ]
cleanupret from %tok unwind label %RestOfTheCleanup
The `CoroSplit` pass, if the funclet bundle is present, will insert
@@ -1593,7 +1592,7 @@ The number of arguments must match the return type of the continuation function:
cleanup:
%tok = call token (...) @llvm.coro.end.results(i8 %val)
- call void @llvm.coro.end(ptr %hdl, i1 0, token %tok)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token %tok)
unreachable
...
@@ -1605,7 +1604,7 @@ The number of arguments must match the return type of the continuation function:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
- declare void @llvm.coro.end.async(ptr <handle>, i1 <unwind>, ...)
+ declare i1 @llvm.coro.end.async(ptr <handle>, i1 <unwind>, ...)
Overview:
"""""""""
@@ -1636,10 +1635,10 @@ the function call.
.. code-block:: llvm
- call void (ptr, i1, ...) @llvm.coro.end.async(
- ptr %hdl, i1 0,
- ptr @must_tail_call_return,
- ptr %ctxt, ptr %task, ptr %actor)
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(
+ ptr %hdl, i1 0,
+ ptr @must_tail_call_return,
+ ptr %ctxt, ptr %task, ptr %actor)
unreachable
.. _coro.suspend:
@@ -2118,30 +2117,6 @@ Example:
%hdl.result = ... ; get address of returned coroutine handle
ret ptr %hdl.result
-'llvm.coro.is_in_ramp' Intrinsic
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-::
-
- declare i1 @llvm.coro.is_in_ramp()
-
-Overview:
-"""""""""
-
-The '``llvm.coro.is_in_ramp``' intrinsic returns a bool value that marks coroutine ramp
-function and resume/destroy function.
-
-Arguments:
-""""""""""
-
-None
-
-Semantics:
-""""""""""
-
-The `CoroSpit` pass replaces `coro.is_in_ramp` with ``True`` ramp functions.
-Otherwise, it is replaced with ``False``, allowing the frontend to separate
-ramp function and resume/destroy function.
-
Coroutine Transformation Passes
===============================
CoroEarly
diff --git a/llvm/include/llvm/IR/Intrinsics.td b/llvm/include/llvm/IR/Intrinsics.td
index 45ae7f9ee3fef..fb9ea10ac9127 100644
--- a/llvm/include/llvm/IR/Intrinsics.td
+++ b/llvm/include/llvm/IR/Intrinsics.td
@@ -1775,13 +1775,12 @@ def int_coro_free : Intrinsic<[llvm_ptr_ty], [llvm_token_ty, llvm_ptr_ty],
[IntrReadMem, IntrArgMemOnly,
ReadOnly<ArgIndex<1>>,
NoCapture<ArgIndex<1>>]>;
-def int_coro_end : Intrinsic<[], [llvm_ptr_ty, llvm_i1_ty, llvm_token_ty], []>;
+def int_coro_end : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty, llvm_i1_ty, llvm_token_ty], []>;
def int_coro_end_results : Intrinsic<[llvm_token_ty], [llvm_vararg_ty]>;
def int_coro_end_async
- : Intrinsic<[], [llvm_ptr_ty, llvm_i1_ty, llvm_vararg_ty], []>;
+ : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty, llvm_i1_ty, llvm_vararg_ty], []>;
def int_coro_frame : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
-def int_coro_is_in_ramp : Intrinsic<[llvm_i1_ty], [], [IntrNoMem], "llvm.coro.is_in_ramp">;
def int_coro_noop : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
def int_coro_size : Intrinsic<[llvm_anyint_ty], [], [IntrNoMem]>;
def int_coro_align : Intrinsic<[llvm_anyint_ty], [], [IntrNoMem]>;
diff --git a/llvm/include/llvm/Transforms/Coroutines/CoroInstr.h b/llvm/include/llvm/Transforms/Coroutines/CoroInstr.h
index 38daf25cacd83..0688068167ae6 100644
--- a/llvm/include/llvm/Transforms/Coroutines/CoroInstr.h
+++ b/llvm/include/llvm/Transforms/Coroutines/CoroInstr.h
@@ -428,18 +428,6 @@ class CoroFrameInst : public IntrinsicInst {
}
};
-/// This represents the llvm.coro.is_in_ramp instruction.
-class CoroIsInRampInst : public IntrinsicInst {
-public:
- // Methods to support type inquiry through isa, cast, and dyn_cast:
- static bool classof(const IntrinsicInst *I) {
- return I->getIntrinsicID() == Intrinsic::coro_is_in_ramp;
- }
- static bool classof(const Value *V) {
- return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
- }
-};
-
/// This represents the llvm.coro.free instruction.
class CoroFreeInst : public IntrinsicInst {
enum { IdArg, FrameArg };
diff --git a/llvm/include/llvm/Transforms/Coroutines/CoroShape.h b/llvm/include/llvm/Transforms/Coroutines/CoroShape.h
index 11b004572957f..c54081de2d9da 100644
--- a/llvm/include/llvm/Transforms/Coroutines/CoroShape.h
+++ b/llvm/include/llvm/Transforms/Coroutines/CoroShape.h
@@ -53,7 +53,6 @@ enum class ABI {
struct Shape {
CoroBeginInst *CoroBegin = nullptr;
SmallVector<AnyCoroEndInst *, 4> CoroEnds;
- SmallVector<CoroIsInRampInst *, 2> CoroIsInRampInsts;
SmallVector<CoroSizeInst *, 2> CoroSizes;
SmallVector<CoroAlignInst *, 2> CoroAligns;
SmallVector<AnyCoroSuspendInst *, 4> CoroSuspends;
@@ -66,7 +65,6 @@ struct Shape {
void clear() {
CoroBegin = nullptr;
CoroEnds.clear();
- CoroIsInRampInsts.clear();
CoroSizes.clear();
CoroAligns.clear();
CoroSuspends.clear();
diff --git a/llvm/lib/Transforms/Coroutines/CoroCleanup.cpp b/llvm/lib/Transforms/Coroutines/CoroCleanup.cpp
index 81efca9dfd209..c00e9c7bbee06 100644
--- a/llvm/lib/Transforms/Coroutines/CoroCleanup.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroCleanup.cpp
@@ -75,8 +75,8 @@ bool Lowerer::lower(Function &F) {
case Intrinsic::coro_subfn_addr:
lowerSubFn(Builder, cast<CoroSubFnInst>(II));
break;
+ case Intrinsic::coro_end:
case Intrinsic::coro_suspend_retcon:
- case Intrinsic::coro_is_in_ramp:
if (IsPrivateAndUnprocessed) {
II->replaceAllUsesWith(PoisonValue::get(II->getType()));
} else
diff --git a/llvm/lib/Transforms/Coroutines/CoroCloner.h b/llvm/lib/Transforms/Coroutines/CoroCloner.h
index 26ec4f3ed6a8c..d1887980fb3bc 100644
--- a/llvm/lib/Transforms/Coroutines/CoroCloner.h
+++ b/llvm/lib/Transforms/Coroutines/CoroCloner.h
@@ -120,7 +120,6 @@ class BaseCloner {
void replaceRetconOrAsyncSuspendUses();
void replaceCoroSuspends();
void replaceCoroEnds();
- void replaceCoroIsInRamp();
void replaceSwiftErrorOps();
void salvageDebugInfo();
void handleFinalSuspend();
diff --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
index c2d7bcc346776..02c38d02cff64 100644
--- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
@@ -213,7 +213,7 @@ static bool replaceCoroEndAsync(AnyCoroEndInst *End) {
/// Replace a non-unwind call to llvm.coro.end.
static void replaceFallthroughCoroEnd(AnyCoroEndInst *End,
const coro::Shape &Shape, Value *FramePtr,
- bool InRamp, CallGraph *CG) {
+ bool InResume, CallGraph *CG) {
// Start inserting right before the coro.end.
IRBuilder<> Builder(End);
@@ -225,7 +225,7 @@ static void replaceFallthroughCoroEnd(AnyCoroEndInst *End,
"switch coroutine should not return any values");
// coro.end doesn't immediately end the coroutine in the main function
// in this lowering, because we need to deallocate the coroutine.
- if (InRamp)
+ if (!InResume)
return;
Builder.CreateRetVoid();
break;
@@ -345,7 +345,8 @@ static void markCoroutineAsDone(IRBuilder<> &Builder, const coro::Shape &Shape,
/// Replace an unwind call to llvm.coro.end.
static void replaceUnwindCoroEnd(AnyCoroEndInst *End, const coro::Shape &Shape,
- Value *FramePtr, bool InRamp, CallGraph *CG) {
+ Value *FramePtr, bool InResume,
+ CallGraph *CG) {
IRBuilder<> Builder(End);
switch (Shape.ABI) {
@@ -358,7 +359,7 @@ static void replaceUnwindCoroEnd(AnyCoroEndInst *End, const coro::Shape &Shape,
// FIXME: We should refactor this once there is other language
// which uses Switch-Resumed style other than C++.
markCoroutineAsDone(Builder, Shape, FramePtr);
- if (InRamp)
+ if (!InResume)
return;
break;
}
@@ -382,11 +383,15 @@ static void replaceUnwindCoroEnd(AnyCoroEndInst *End, const coro::Shape &Shape,
}
static void replaceCoroEnd(AnyCoroEndInst *End, const coro::Shape &Shape,
- Value *FramePtr, bool InRamp, CallGraph *CG) {
+ Value *FramePtr, bool InResume, CallGraph *CG) {
if (End->isUnwind())
- replaceUnwindCoroEnd(End, Shape, FramePtr, InRamp, CG);
+ replaceUnwindCoroEnd(End, Shape, FramePtr, InResume, CG);
else
- replaceFallthroughCoroEnd(End, Shape, FramePtr, InRamp, CG);
+ replaceFallthroughCoroEnd(End, Shape, FramePtr, InResume, CG);
+
+ auto &Context = End->getContext();
+ End->replaceAllUsesWith(InResume ? ConstantInt::getTrue(Context)
+ : ConstantInt::getFalse(Context));
End->eraseFromParent();
}
@@ -553,16 +558,7 @@ void coro::BaseCloner::replaceCoroEnds() {
// We use a null call graph because there's no call graph node for
// the cloned function yet. We'll just be rebuilding that later.
auto *NewCE = cast<AnyCoroEndInst>(VMap[CE]);
- replaceCoroEnd(NewCE, Shape, NewFramePtr, /*in ramp*/ false, nullptr);
- }
-}
-
-void coro::BaseCloner::replaceCoroIsInRamp() {
- auto &Ctx = OrigF.getContext();
- for (auto *II : Shape.CoroIsInRampInsts) {
- auto *NewII = cast<CoroIsInRampInst>(VMap[II]);
- NewII->replaceAllUsesWith(ConstantInt::getFalse(Ctx));
- NewII->eraseFromParent();
+ replaceCoroEnd(NewCE, Shape, NewFramePtr, /*in resume*/ true, nullptr);
}
}
@@ -1081,8 +1077,6 @@ void coro::BaseCloner::create() {
// Remove coro.end intrinsics.
replaceCoroEnds();
- replaceCoroIsInRamp();
-
// Salvage debug info that points into the coroutine frame.
salvageDebugInfo();
}
@@ -1962,19 +1956,14 @@ class PrettyStackTraceFunction : public PrettyStackTraceEntry {
static void removeCoroEndsFromRampFunction(const coro::Shape &Shape) {
if (Shape.ABI != coro::ABI::Switch) {
for (auto *End : Shape.CoroEnds) {
- replaceCoroEnd(End, Shape, Shape.FramePtr, /*in ramp*/ true, nullptr);
+ replaceCoroEnd(End, Shape, Shape.FramePtr, /*in resume*/ false, nullptr);
}
} else {
- for (llvm::AnyCoroEndInst *End : Shape.CoroEnds)
+ for (llvm::AnyCoroEndInst *End : Shape.CoroEnds) {
+ auto &Context = End->getContext();
+ End->replaceAllUsesWith(ConstantInt::getFalse(Context));
End->eraseFromParent();
- }
-}
-
-static void removeCoroIsInRampFromRampFunction(const coro::Shape &Shape) {
- for (auto *II : Shape.CoroIsInRampInsts) {
- auto &Ctx = II->getContext();
- II->replaceAllUsesWith(ConstantInt::getTrue(Ctx));
- II->eraseFromParent();
+ }
}
}
@@ -2039,7 +2028,6 @@ static void doSplitCoroutine(Function &F, SmallVectorImpl<Function *> &Clones,
coro::salvageDebugInfo(ArgToAllocaMap, *DVR, false /*UseEntryValue*/);
removeCoroEndsFromRampFunction(Shape);
- removeCoroIsInRampFromRampFunction(Shape);
if (shouldCreateNoAllocVariant)
SwitchCoroutineSplitter::createNoAllocVariant(F, Shape, Clones);
diff --git a/llvm/lib/Transforms/Coroutines/Coroutines.cpp b/llvm/lib/Transforms/Coroutines/Coroutines.cpp
index 47c2d0d462e00..28a89a8f87dbd 100644
--- a/llvm/lib/Transforms/Coroutines/Coroutines.cpp
+++ b/llvm/lib/Transforms/Coroutines/Coroutines.cpp
@@ -93,7 +93,6 @@ static Intrinsic::ID NonOverloadedCoroIntrinsics[] = {
Intrinsic::coro_save,
Intrinsic::coro_subfn_addr,
Intrinsic::coro_suspend,
- Intrinsic::coro_is_in_ramp,
};
bool coro::isSuspendBlock(BasicBlock *BB) {
@@ -276,9 +275,6 @@ void coro::Shape::analyze(Function &F,
}
}
break;
- case Intrinsic::coro_is_in_ramp:
- CoroIsInRampInsts.push_back(cast<CoroIsInRampInst>(II));
- break;
case Intrinsic::coro_promise:
assert(CoroPromise == nullptr &&
"CoroEarly must ensure coro.promise unique");
diff --git a/llvm/test/Analysis/GlobalsModRef/nonescaping-noalias.ll b/llvm/test/Analysis/GlobalsModRef/nonescaping-noalias.ll
index e2eb4f6e7b9e9..eed93cf0df8ef 100644
--- a/llvm/test/Analysis/GlobalsModRef/nonescaping-noalias.ll
+++ b/llvm/test/Analysis/GlobalsModRef/nonescaping-noalias.ll
@@ -62,7 +62,7 @@ define ptr @test1_tls_noopt(ptr %coro, ptr %param) presplitcoroutine {
; CHECK-NEXT: store i32 [[V]], ptr [[PARAM]], align 4
; CHECK-NEXT: ret ptr [[CORO]]
; CHECK: suspend:
-; CHECK-NEXT: call void @llvm.coro.end(ptr [[CORO]], i1 false, token none)
+; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.coro.end(ptr [[CORO]], i1 false, token none)
; CHECK-NEXT: ret ptr [[CORO]]
;
entry:
@@ -79,7 +79,7 @@ resume:
ret ptr %coro
suspend:
- call void @llvm.coro.end(ptr %coro, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %coro, i1 0, token none)
ret ptr %coro
}
diff --git a/llvm/test/Assembler/auto_upgrade_intrinsics.ll b/llvm/test/Assembler/auto_upgrade_intrinsics.ll
index 64d4a3ba7c802..37cb49650f6bd 100644
--- a/llvm/test/Assembler/auto_upgrade_intrinsics.ll
+++ b/llvm/test/Assembler/auto_upgrade_intrinsics.ll
@@ -47,11 +47,11 @@ entry:
ret void
}
-declare void @llvm.coro.end(ptr, i1)
+declare i1 @llvm.coro.end(ptr, i1)
define void @test.coro.end(ptr %ptr) {
; CHECK-LABEL: @test.coro.end(
-; CHECK: call void @llvm.coro.end(ptr %ptr, i1 false, token none)
- call void @llvm.coro.end(ptr %ptr, i1 false)
+; CHECK: call i1 @llvm.coro.end(ptr %ptr, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %ptr, i1 false)
ret void
}
diff --git a/llvm/test/Instrumentation/AddressSanitizer/coro-byval-param.ll b/llvm/test/Instrumentation/AddressSanitizer/coro-byval-param.ll
index b0aec4e0426e6..290f1cbd38cdf 100644
--- a/llvm/test/Instrumentation/AddressSanitizer/coro-byval-param.ll
+++ b/llvm/test/Instrumentation/AddressSanitizer/coro-byval-param.ll
@@ -58,7 +58,7 @@ coro.free: ; preds = %cleanup33
br label %coro.ret
coro.ret: ; preds = %coro.free, %cleanup33, %init.ready, %coro.init
- call void @llvm.coro.end(ptr null, i1 false, token none) #10
+ %10 = call i1 @llvm.coro.end(ptr null, i1 false, token none) #10
ret ptr %call2
}
@@ -105,7 +105,7 @@ declare i8 @llvm.coro.suspend(token, i1) #2
declare void @_ZN4task12promise_type13final_suspendEv(ptr nonnull dereferenceable(1)) local_unnamed_addr #7 align 2
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
; Function Attrs: nobuiltin nounwind
declare void @_ZdlPv(ptr) local_unnamed_addr #8
diff --git a/llvm/test/Instrumentation/HWAddressSanitizer/coro-byval-param.ll b/llvm/test/Instrumentation/HWAddressSanitizer/coro-byval-param.ll
index 064565ca2f3b2..0289b33a45882 100644
--- a/llvm/test/Instrumentation/HWAddressSanitizer/coro-byval-param.ll
+++ b/llvm/test/Instrumentation/HWAddressSanitizer/coro-byval-param.ll
@@ -58,7 +58,7 @@ coro.free: ; preds = %cleanup33
br label %coro.ret
coro.ret: ; preds = %coro.free, %cleanup33, %init.ready, %coro.init
- call void @llvm.coro.end(ptr null, i1 false, token none) #10
+ %10 = call i1 @llvm.coro.end(ptr null, i1 false, token none) #10
ret ptr %call2
}
@@ -105,7 +105,7 @@ declare i8 @llvm.coro.suspend(token, i1) #2
declare void @_ZN4task12promise_type13final_suspendEv(ptr nonnull dereferenceable(1)) local_unnamed_addr #7 align 2
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
; Function Attrs: nobuiltin nounwind
declare void @_ZdlPv(ptr) local_unnamed_addr #8
diff --git a/llvm/test/Transforms/Coroutines/ArgAddr.ll b/llvm/test/Transforms/Coroutines/ArgAddr.ll
index 9328c67459077..ab70836508101 100644
--- a/llvm/test/Transforms/Coroutines/ArgAddr.ll
+++ b/llvm/test/Transforms/Coroutines/ArgAddr.ll
@@ -45,7 +45,7 @@ coro_Cleanup:
br label %coro_Suspend
coro_Suspend:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret ptr %1
}
@@ -69,7 +69,7 @@ declare i32 @llvm.coro.size.i32()
declare ptr @llvm.coro.begin(token, ptr)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.coro.resume(ptr)
declare void @llvm.coro.destroy(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-align16.ll b/llvm/test/Transforms/Coroutines/coro-align16.ll
index afdca77e8af3e..39902be9149e8 100644
--- a/llvm/test/Transforms/Coroutines/coro-align16.ll
+++ b/llvm/test/Transforms/Coroutines/coro-align16.ll
@@ -24,7 +24,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -44,7 +44,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @capture_call(ptr)
declare void @nocapture_call(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-align32.ll b/llvm/test/Transforms/Coroutines/coro-align32.ll
index 9e82ec83011f5..3d910e951259b 100644
--- a/llvm/test/Transforms/Coroutines/coro-align32.ll
+++ b/llvm/test/Transforms/Coroutines/coro-align32.ll
@@ -28,7 +28,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -48,7 +48,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @capture_call(ptr)
declare void @nocapture_call(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-align64-02.ll b/llvm/test/Transforms/Coroutines/coro-align64-02.ll
index 13c0cbe0e24da..3e2e33d2da260 100644
--- a/llvm/test/Transforms/Coroutines/coro-align64-02.ll
+++ b/llvm/test/Transforms/Coroutines/coro-align64-02.ll
@@ -24,7 +24,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -44,7 +44,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @capture_call(ptr)
declare void @nocapture_call(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-align64.ll b/llvm/test/Transforms/Coroutines/coro-align64.ll
index f6cf8f40b2b41..9623a99a8b27e 100644
--- a/llvm/test/Transforms/Coroutines/coro-align64.ll
+++ b/llvm/test/Transforms/Coroutines/coro-align64.ll
@@ -24,7 +24,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -44,7 +44,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @capture_call(ptr)
declare void @nocapture_call(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-align8-02.ll b/llvm/test/Transforms/Coroutines/coro-align8-02.ll
index 0a6723a41256e..758d4ce3e21b2 100644
--- a/llvm/test/Transforms/Coroutines/coro-align8-02.ll
+++ b/llvm/test/Transforms/Coroutines/coro-align8-02.ll
@@ -20,7 +20,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -40,7 +40,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @aligned_alloc(i32, i32)
declare void @free(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-align8.ll b/llvm/test/Transforms/Coroutines/coro-align8.ll
index ac083378803ec..48a2687cc4799 100644
--- a/llvm/test/Transforms/Coroutines/coro-align8.ll
+++ b/llvm/test/Transforms/Coroutines/coro-align8.ll
@@ -24,7 +24,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -44,7 +44,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @capture_call(ptr)
declare void @nocapture_call(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloc-with-param-O0.ll b/llvm/test/Transforms/Coroutines/coro-alloc-with-param-O0.ll
index 851f8a7e4e293..bdd49413cf15b 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloc-with-param-O0.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloc-with-param-O0.ll
@@ -24,7 +24,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -54,7 +54,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @myAlloc(i64, i32)
declare double @print(double)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloc-with-param-O2.ll b/llvm/test/Transforms/Coroutines/coro-alloc-with-param-O2.ll
index ee2215efd1cd9..a0ab5b733fdf0 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloc-with-param-O2.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloc-with-param-O2.ll
@@ -21,7 +21,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -49,7 +49,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @myAlloc(i64, i32)
declare double @print(double)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-01.ll b/llvm/test/Transforms/Coroutines/coro-alloca-01.ll
index f0c0bb31d40f5..5208c055c4fdf 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-01.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-01.ll
@@ -33,7 +33,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -55,7 +55,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @print(ptr)
declare noalias ptr @malloc(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-02.ll b/llvm/test/Transforms/Coroutines/coro-alloca-02.ll
index 832132d451776..83f56009f00e3 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-02.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-02.ll
@@ -25,7 +25,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -44,7 +44,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @print(ptr)
declare noalias ptr @malloc(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-03.ll b/llvm/test/Transforms/Coroutines/coro-alloca-03.ll
index 5148d87bbc2b2..7740ed440a0d5 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-03.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-03.ll
@@ -23,7 +23,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -44,7 +44,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @capture_call(ptr)
declare void @nocapture_call(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-04.ll b/llvm/test/Transforms/Coroutines/coro-alloca-04.ll
index 9df1fd4326899..c19cd253a9179 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-04.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-04.ll
@@ -32,7 +32,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -53,7 +53,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @print(ptr)
declare noalias ptr @malloc(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-05.ll b/llvm/test/Transforms/Coroutines/coro-alloca-05.ll
index a096bb1beea21..96769e51fb80f 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-05.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-05.ll
@@ -23,7 +23,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -44,7 +44,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @print(i32)
declare noalias ptr @malloc(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-06.ll b/llvm/test/Transforms/Coroutines/coro-alloca-06.ll
index 22997fbbcdfd7..bf75196047aff 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-06.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-06.ll
@@ -37,7 +37,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -63,7 +63,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.lifetime.start.p0(ptr nocapture)
declare void @llvm.lifetime.end.p0(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-07.ll b/llvm/test/Transforms/Coroutines/coro-alloca-07.ll
index ac07dc33707c7..8bfb8cfabbd27 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-07.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-07.ll
@@ -36,7 +36,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -49,7 +49,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.lifetime.start.p0(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-08.ll b/llvm/test/Transforms/Coroutines/coro-alloca-08.ll
index dab55c5f0cd41..80be62ac64c8c 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-08.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-08.ll
@@ -32,7 +32,7 @@ await.ready:
%StrayCoroSave = call token @llvm.coro.save(ptr null)
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -59,7 +59,7 @@ await.ready:
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -75,6 +75,6 @@ declare token @llvm.coro.save(ptr) #3
declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-09.ll b/llvm/test/Transforms/Coroutines/coro-alloca-09.ll
index 4736790dfe324..2539811f46b7c 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-09.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-09.ll
@@ -52,7 +52,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-loop-carried-address.ll b/llvm/test/Transforms/Coroutines/coro-alloca-loop-carried-address.ll
index baec3f1a0c869..8b8dbacbfc5c7 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-loop-carried-address.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-loop-carried-address.ll
@@ -68,7 +68,7 @@ loop:
]
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -80,6 +80,6 @@ declare i64 @llvm.coro.size.i64()
declare ptr @llvm.coro.begin(token, ptr writeonly)
declare token @llvm.coro.save(ptr)
declare i8 @llvm.coro.suspend(token, i1)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.lifetime.start(ptr nocapture)
declare void @llvm.lifetime.end(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-outside-frame.ll b/llvm/test/Transforms/Coroutines/coro-alloca-outside-frame.ll
index e93e97fb06643..ac6a5752438ce 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-outside-frame.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-outside-frame.ll
@@ -33,7 +33,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -54,7 +54,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @print(ptr)
declare noalias ptr @malloc(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-with-addrspace.ll b/llvm/test/Transforms/Coroutines/coro-alloca-with-addrspace.ll
index 12057a953701c..410d3e35e1c93 100644
--- a/llvm/test/Transforms/Coroutines/coro-alloca-with-addrspace.ll
+++ b/llvm/test/Transforms/Coroutines/coro-alloca-with-addrspace.ll
@@ -31,7 +31,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0)
ret ptr %hdl
}
@@ -50,7 +50,7 @@ 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.end(ptr, i1)
+declare i1 @llvm.coro.end(ptr, i1)
declare void @print(ptr)
declare noalias ptr @malloc(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-infinite-loop-bug.ll b/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-infinite-loop-bug.ll
index 6562ac2e9e430..d662638d2dd9a 100644
--- a/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-infinite-loop-bug.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-infinite-loop-bug.ll
@@ -72,8 +72,8 @@ declare { ptr, ptr, ptr, ptr } @llvm.coro.suspend.async.sl_p0i8p0i8p0i8p0i8s(i32
declare ptr @llvm.coro.prepare.async(ptr)
declare token @llvm.coro.id.async(i32, i32, i32, ptr)
declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.end.async(ptr, i1, ...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end.async(ptr, i1, ...)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare {ptr, ptr, ptr} @llvm.coro.suspend.async(i32, ptr, ptr, ...)
declare ptr @context_alloc()
declare void @llvm.coro.async.context.dealloc(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-start-bug.ll b/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-start-bug.ll
index efe6403941463..49c4207887340 100644
--- a/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-start-bug.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-start-bug.ll
@@ -82,7 +82,7 @@ loop:
loop_exit:
call void @llvm.lifetime.end.p0(ptr %escaped_addr)
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 false)
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 false)
unreachable
}
@@ -96,8 +96,8 @@ declare { ptr, ptr, ptr, ptr } @llvm.coro.suspend.async.sl_p0i8p0i8p0i8p0i8s(i32
declare ptr @llvm.coro.prepare.async(ptr)
declare token @llvm.coro.id.async(i32, i32, i32, ptr)
declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.end.async(ptr, i1, ...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end.async(ptr, i1, ...)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare {ptr, ptr, ptr} @llvm.coro.suspend.async(i32, ptr, ptr, ...)
declare ptr @context_alloc()
declare void @llvm.coro.async.context.dealloc(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-async-coro-id-async-bug.ll b/llvm/test/Transforms/Coroutines/coro-async-coro-id-async-bug.ll
index 2405b40326eea..3a2201f4d30c0 100644
--- a/llvm/test/Transforms/Coroutines/coro-async-coro-id-async-bug.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async-coro-id-async-bug.ll
@@ -16,7 +16,7 @@ entry:
%5 = getelementptr inbounds <{ ptr, ptr }>, ptr %4, i32 0, i32 1
%6 = load ptr, ptr %5, align 8
%7 = load ptr, ptr %1, align 8
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %3, i1 false, ptr @repo.0, ptr %6, ptr %7)
+ %8 = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %3, i1 false, ptr @repo.0, ptr %6, ptr %7)
unreachable
}
@@ -35,6 +35,6 @@ declare token @llvm.coro.id.async(i32, i32, i32, ptr) #1
declare ptr @llvm.coro.begin(token, ptr writeonly) #1
; Function Attrs: nounwind
-declare void @llvm.coro.end.async(ptr, i1, ...) #1
+declare i1 @llvm.coro.end.async(ptr, i1, ...) #1
attributes #1 = { nounwind }
diff --git a/llvm/test/Transforms/Coroutines/coro-async-declaration.ll b/llvm/test/Transforms/Coroutines/coro-async-declaration.ll
index 2cbe5135d7c47..aee6aa4f78a83 100644
--- a/llvm/test/Transforms/Coroutines/coro-async-declaration.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async-declaration.ll
@@ -43,7 +43,7 @@ entry:
%15 = getelementptr inbounds <{ ptr, ptr }>, ptr %14, i32 0, i32 1, !dbg !11
%16 = load ptr, ptr %15, align 8, !dbg !11
%17 = load ptr, ptr %1, align 8, !dbg !11
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %3, i1 false, ptr @"$s3foo3FooO3baryyYaF.0.1", ptr %16, ptr %17), !dbg !11
+ %18 = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %3, i1 false, ptr @"$s3foo3FooO3baryyYaF.0.1", ptr %16, ptr %17), !dbg !11
unreachable, !dbg !11
}
@@ -89,7 +89,7 @@ entry:
}
; Function Attrs: nounwind
-declare void @llvm.coro.end.async(ptr, i1, ...) #0
+declare i1 @llvm.coro.end.async(ptr, i1, ...) #0
attributes #0 = { nounwind }
attributes #1 = { nomerge nounwind }
diff --git a/llvm/test/Transforms/Coroutines/coro-async-dyn-align.ll b/llvm/test/Transforms/Coroutines/coro-async-dyn-align.ll
index ffcafca891199..040c9881c1ab3 100644
--- a/llvm/test/Transforms/Coroutines/coro-async-dyn-align.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async-dyn-align.ll
@@ -27,8 +27,8 @@ declare void @llvm.coro.async.context.dealloc(ptr)
declare ptr @llvm.coro.async.resume()
declare token @llvm.coro.id.async(i32, i32, i32, ptr)
declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.end.async(ptr, i1, ...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end.async(ptr, i1, ...)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare swiftcc void @asyncReturn(ptr)
declare swiftcc void @asyncSuspend(ptr)
declare {ptr} @llvm.coro.suspend.async(i32, ptr, ptr, ...)
@@ -91,6 +91,6 @@ entry:
call void @opaque(ptr %tmp4)
call void @llvm.coro.async.context.dealloc(ptr %callee_context)
tail call swiftcc void @asyncReturn(ptr %async.ctxt)
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
unreachable
}
diff --git a/llvm/test/Transforms/Coroutines/coro-async-end-bug.ll b/llvm/test/Transforms/Coroutines/coro-async-end-bug.ll
index c5ce27c1328f2..0daa4b0c3da64 100644
--- a/llvm/test/Transforms/Coroutines/coro-async-end-bug.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async-end-bug.ll
@@ -14,7 +14,7 @@ declare token @llvm.coro.id.async(i32, i32, i32, ptr) #0
declare ptr @llvm.coro.begin(token, ptr writeonly) #0
-declare void @llvm.coro.end.async(ptr, i1, ...) #0
+declare i1 @llvm.coro.end.async(ptr, i1, ...) #0
define swifttailcc void @repo(ptr swiftasync %0, ptr noalias nocapture %1, ptr noalias nocapture %2, ptr %3, ptr %4, ptr %Self, ptr %Self.AsyncSequence, ptr %Self.Element.Comparable) #1 {
entry:
@@ -27,7 +27,7 @@ entry:
%10 = getelementptr inbounds <{ ptr, ptr }>, ptr %9, i32 0, i32 1
%11 = load ptr, ptr %10, align 8
%12 = load ptr, ptr %5, align 8
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %7, i1 false, ptr @repo.0, ptr %11, ptr %12, i1 %8, ptr null)
+ %13 = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %7, i1 false, ptr @repo.0, ptr %11, ptr %12, i1 %8, ptr null)
unreachable
}
diff --git a/llvm/test/Transforms/Coroutines/coro-async-no-cse-swift-async-context-addr.ll b/llvm/test/Transforms/Coroutines/coro-async-no-cse-swift-async-context-addr.ll
index e745177e9cb28..c898a1b0c2983 100644
--- a/llvm/test/Transforms/Coroutines/coro-async-no-cse-swift-async-context-addr.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async-no-cse-swift-async-context-addr.ll
@@ -41,7 +41,7 @@ entry:
%11 = call ptr @llvm.swift.async.context.addr()
store ptr %9, ptr %11, align 8
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %3, i1 false, ptr @repo.0, ptr %9, ptr %10)
+ %12 = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %3, i1 false, ptr @repo.0, ptr %9, ptr %10)
unreachable
}
@@ -66,7 +66,7 @@ entry:
declare { ptr } @llvm.coro.suspend.async.sl_p0i8s(i32, ptr, ptr, ...) #1
declare token @llvm.coro.id.async(i32, i32, i32, ptr) #1
declare ptr @llvm.coro.begin(token, ptr writeonly) #1
-declare void @llvm.coro.end.async(ptr, i1, ...) #1
+declare i1 @llvm.coro.end.async(ptr, i1, ...) #1
declare ptr @llvm.coro.async.resume() #1
declare ptr @llvm.swift.async.context.addr() #1
diff --git a/llvm/test/Transforms/Coroutines/coro-async-nomerge.ll b/llvm/test/Transforms/Coroutines/coro-async-nomerge.ll
index 42652bd88bc58..ac39704b93da5 100644
--- a/llvm/test/Transforms/Coroutines/coro-async-nomerge.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async-nomerge.ll
@@ -11,7 +11,7 @@ declare { ptr } @llvm.coro.suspend.async.sl_p0i8s(i32, ptr, ptr, ...)
declare ptr @llvm.coro.begin(token, ptr writeonly)
declare token @llvm.coro.id.async(i32, i32, i32, ptr)
-declare void @llvm.coro.end.async(ptr, i1, ...)
+declare i1 @llvm.coro.end.async(ptr, i1, ...)
define linkonce_odr hidden ptr @__swift_async_resume_get_context(ptr %0) {
entry:
@@ -53,7 +53,7 @@ bb2:
br label %tailblock
tailblock:
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %id, i1 false, ptr @repo.0, ptr @return, ptr %0)
+ %t = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %id, i1 false, ptr @repo.0, ptr @return, ptr %0)
unreachable
}
@@ -115,6 +115,6 @@ bb2:
br label %tailblock
tailblock:
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %id, i1 false, ptr @repo.0, ptr @return, ptr %0)
+ %t = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %id, i1 false, ptr @repo.0, ptr @return, ptr %0)
unreachable
}
diff --git a/llvm/test/Transforms/Coroutines/coro-async-phi.ll b/llvm/test/Transforms/Coroutines/coro-async-phi.ll
index 7aa6857aa04eb..25be1eaa059eb 100644
--- a/llvm/test/Transforms/Coroutines/coro-async-phi.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async-phi.ll
@@ -83,7 +83,7 @@ bb68: ; preds = %bb30
br label %bb126
bb126:
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %i12, i1 false, ptr @__swift_suspend_dispatch_2, ptr @doIt, ptr null, ptr null)
+ %i162 = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %i12, i1 false, ptr @__swift_suspend_dispatch_2, ptr @doIt, ptr null, ptr null)
unreachable
}
@@ -119,7 +119,7 @@ entry:
declare { ptr } @llvm.coro.suspend.async.sl_p0i8s(i32, ptr, ptr, ...) #1
; Function Attrs: nounwind
-declare void @llvm.coro.end.async(ptr, i1, ...) #1
+declare i1 @llvm.coro.end.async(ptr, i1, ...) #1
; Function Attrs: argmemonly nounwind
declare extern_weak swiftcc ptr @swift_task_alloc(i64) #5
diff --git a/llvm/test/Transforms/Coroutines/coro-async.ll b/llvm/test/Transforms/Coroutines/coro-async.ll
index f94c6c11aa8b1..331d6a60bed6b 100644
--- a/llvm/test/Transforms/Coroutines/coro-async.ll
+++ b/llvm/test/Transforms/Coroutines/coro-async.ll
@@ -101,7 +101,7 @@ entry:
call void @some_user(i64 %val.2)
store <4 x double> %vector_spill, ptr %vector, align 16
tail call swiftcc void @asyncReturn(ptr %async.ctxt, ptr %continuation_task_arg, ptr %actor)
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
unreachable
}
@@ -211,7 +211,7 @@ entry:
%continuation_actor_arg = extractvalue {ptr, ptr, ptr} %res.2, 1
tail call swiftcc void @asyncReturn(ptr %async.ctxt, ptr %continuation_task_arg, ptr %continuation_actor_arg)
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -297,7 +297,7 @@ entry:
call void @llvm.coro.async.context.dealloc(ptr %callee_context)
%continuation_task_arg = extractvalue {ptr, ptr, ptr} %res, 1
tail call swiftcc void @asyncReturn(ptr %async.ctxt, ptr %continuation_task_arg, ptr %actor)
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
unreachable
}
@@ -339,11 +339,11 @@ entry:
is_equal:
tail call swiftcc void @asyncReturn(ptr %async.ctxt, ptr %continuation_task_arg, ptr %actor)
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
unreachable
is_not_equal:
- call void (ptr, i1, ...) @llvm.coro.end.async(
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(
ptr %hdl, i1 0,
ptr @must_tail_call_return,
ptr %async.ctxt, ptr %continuation_task_arg, ptr null)
@@ -406,7 +406,7 @@ entry:
call void @some_user(i64 %val.2)
tail call swiftcc void @asyncReturn(ptr %async.ctxt, ptr %continuation_task_arg, ptr %actor)
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
unreachable
}
@@ -431,7 +431,7 @@ entry:
ptr @no_coro_suspend_fp)
%hdl = call ptr @llvm.coro.begin(token %id, ptr null)
call void @some_may_write(ptr %some_alloca)
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
unreachable
}
@@ -459,7 +459,7 @@ entry:
%hdl = call ptr @llvm.coro.begin(token %id, ptr null)
store ptr null, ptr %some_alloca, align 8
call void @do_with_swifterror(ptr swifterror %some_alloca)
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
+ call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 0)
unreachable
}
@@ -488,7 +488,7 @@ entry:
%undefined_resume_pointer = call ptr @llvm.coro.async.resume()
call void @use(ptr %undefined_resume_pointer)
call void @crash()
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 false)
+ %unused = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 false)
unreachable
}
; CHECK-LABEL: define swiftcc void @undefined_coro_async_resume
@@ -510,7 +510,7 @@ entry:
%5 = getelementptr inbounds <{ ptr, ptr }>, ptr %4, i32 0, i32 1
%6 = load ptr, ptr %5, align 8
%7 = load ptr, ptr %1, align 8
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %3, i1 false, ptr @simpleFunc.0, ptr %6, ptr %7)
+ %8 = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %3, i1 false, ptr @simpleFunc.0, ptr %6, ptr %7)
unreachable
}
@@ -529,8 +529,8 @@ declare { ptr, ptr, ptr, ptr } @llvm.coro.suspend.async.sl_p0i8p0i8p0i8p0i8s(i32
declare ptr @llvm.coro.prepare.async(ptr)
declare token @llvm.coro.id.async(i32, i32, i32, ptr)
declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.end.async(ptr, i1, ...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end.async(ptr, i1, ...)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare {ptr, ptr, ptr} @llvm.coro.suspend.async(i32, ptr, ptr, ...)
declare ptr @llvm.coro.async.context.alloc(ptr, ptr)
declare void @llvm.coro.async.context.dealloc(ptr)
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
index 4aef572f47a35..ee64ce6e4482b 100644
--- a/llvm/test/Transforms/Coroutines/coro-await-suspend-handle-in-ramp.ll
+++ b/llvm/test/Transforms/Coroutines/coro-await-suspend-handle-in-ramp.ll
@@ -32,7 +32,7 @@ cleanup:
br label %ret
ret:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret void
}
@@ -53,7 +53,7 @@ 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 void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @free(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll b/llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll
index 67d179a8f9b04..fd3b7bd815300 100644
--- a/llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll
+++ b/llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll
@@ -88,7 +88,7 @@ cleanup:
br label %ret
ret:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret void
}
@@ -112,7 +112,7 @@ declare ptr @llvm.coro.begin(token, ptr)
declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
declare i1 @llvm.coro.await.suspend.bool(ptr, ptr, ptr)
declare void @llvm.coro.await.suspend.handle(ptr, ptr, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @__cxa_begin_catch(ptr)
declare void @use_val(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll b/llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll
index 72a158abffc6b..8d019e6954628 100644
--- a/llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll
+++ b/llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll
@@ -65,7 +65,7 @@ cleanup:
br label %ret
ret:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret void
}
@@ -89,7 +89,7 @@ declare ptr @llvm.coro.begin(token, ptr)
declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
declare i1 @llvm.coro.await.suspend.bool(ptr, ptr, ptr)
declare void @llvm.coro.await.suspend.handle(ptr, ptr, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @free(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-byval-param.ll b/llvm/test/Transforms/Coroutines/coro-byval-param.ll
index 44d6f1ccec505..38ab5ac481cd9 100644
--- a/llvm/test/Transforms/Coroutines/coro-byval-param.ll
+++ b/llvm/test/Transforms/Coroutines/coro-byval-param.ll
@@ -52,7 +52,7 @@ coro.free: ; preds = %cleanup33
br label %coro.ret
coro.ret: ; preds = %coro.free, %cleanup33, %init.ready, %coro.init
- call void @llvm.coro.end(ptr null, i1 false, token none) #10
+ %10 = call i1 @llvm.coro.end(ptr null, i1 false, token none) #10
ret ptr %call2
}
@@ -102,7 +102,7 @@ declare i8 @llvm.coro.suspend(token, i1) #2
declare void @_ZN4task12promise_type13final_suspendEv(ptr nonnull dereferenceable(1)) local_unnamed_addr #7 align 2
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
; Function Attrs: nobuiltin nounwind
declare void @_ZdlPv(ptr) local_unnamed_addr #8
diff --git a/llvm/test/Transforms/Coroutines/coro-catchswitch-cleanuppad.ll b/llvm/test/Transforms/Coroutines/coro-catchswitch-cleanuppad.ll
index d0e7c1c29eb32..2f6d23da82692 100644
--- a/llvm/test/Transforms/Coroutines/coro-catchswitch-cleanuppad.ll
+++ b/llvm/test/Transforms/Coroutines/coro-catchswitch-cleanuppad.ll
@@ -37,7 +37,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
catch.dispatch.1:
@@ -106,7 +106,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-catchswitch.ll b/llvm/test/Transforms/Coroutines/coro-catchswitch.ll
index 4332f2df03d15..3cf6dc86f2c6d 100644
--- a/llvm/test/Transforms/Coroutines/coro-catchswitch.ll
+++ b/llvm/test/Transforms/Coroutines/coro-catchswitch.ll
@@ -54,7 +54,7 @@ resume: ; preds = %await2.suspend
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret void
cleanuppad:
@@ -80,7 +80,7 @@ declare void @print(i32)
declare noalias ptr @malloc(i32)
declare void @free(ptr)
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
; Function Attrs: nobuiltin nounwind
diff --git a/llvm/test/Transforms/Coroutines/coro-debug-O2.ll b/llvm/test/Transforms/Coroutines/coro-debug-O2.ll
index 4daaa5960f0ae..cc1dbcd1c80fd 100644
--- a/llvm/test/Transforms/Coroutines/coro-debug-O2.ll
+++ b/llvm/test/Transforms/Coroutines/coro-debug-O2.ll
@@ -112,7 +112,7 @@ cleanup.cont: ; preds = %after.coro.free
br label %coro.ret
coro.ret: ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ %end = call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreachable: ; preds = %after.coro.free
@@ -128,7 +128,7 @@ declare token @llvm.coro.save(ptr)
declare ptr @llvm.coro.begin(token, ptr writeonly)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr nocapture readonly)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @new(i64)
declare void @delete(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-debug-coro-frame.ll b/llvm/test/Transforms/Coroutines/coro-debug-coro-frame.ll
index f2aedefcfd381..dff064ec084c9 100644
--- a/llvm/test/Transforms/Coroutines/coro-debug-coro-frame.ll
+++ b/llvm/test/Transforms/Coroutines/coro-debug-coro-frame.ll
@@ -205,7 +205,7 @@ cleanup.cont: ; preds = %after.coro.free
br label %coro.ret
coro.ret: ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ %end = call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreachable: ; preds = %after.coro.free
@@ -334,7 +334,7 @@ cleanup.cont: ; preds = %after.coro.free
br label %coro.ret
coro.ret: ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ %end = call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreachable: ; preds = %after.coro.free
@@ -350,7 +350,7 @@ declare token @llvm.coro.save(ptr)
declare ptr @llvm.coro.begin(token, ptr writeonly)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr nocapture readonly)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @new(i64)
declare void @delete(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-debug-dbg.values-not_used_in_frame.ll b/llvm/test/Transforms/Coroutines/coro-debug-dbg.values-not_used_in_frame.ll
index 483c1a8e8608a..deaec7b8d7f89 100644
--- a/llvm/test/Transforms/Coroutines/coro-debug-dbg.values-not_used_in_frame.ll
+++ b/llvm/test/Transforms/Coroutines/coro-debug-dbg.values-not_used_in_frame.ll
@@ -123,7 +123,7 @@ cleanup.cont: ; preds = %after.coro.free
br label %coro.ret
coro.ret: ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ %end = call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreachable: ; preds = %after.coro.free
@@ -155,7 +155,7 @@ declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @new(i64)
diff --git a/llvm/test/Transforms/Coroutines/coro-debug-dbg.values.ll b/llvm/test/Transforms/Coroutines/coro-debug-dbg.values.ll
index c524f38432ed1..0934393a667ee 100644
--- a/llvm/test/Transforms/Coroutines/coro-debug-dbg.values.ll
+++ b/llvm/test/Transforms/Coroutines/coro-debug-dbg.values.ll
@@ -162,7 +162,7 @@ cleanup.cont: ; preds = %after.coro.free
br label %coro.ret
coro.ret: ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ %end = call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreachable: ; preds = %after.coro.free
@@ -194,7 +194,7 @@ declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @new(i64)
diff --git a/llvm/test/Transforms/Coroutines/coro-debug-frame-variable.ll b/llvm/test/Transforms/Coroutines/coro-debug-frame-variable.ll
index 0ef24a6b1e2a6..125ec752c8345 100644
--- a/llvm/test/Transforms/Coroutines/coro-debug-frame-variable.ll
+++ b/llvm/test/Transforms/Coroutines/coro-debug-frame-variable.ll
@@ -186,7 +186,7 @@ cleanup.cont: ; preds = %after.coro.free
br label %coro.ret
coro.ret: ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ %end = call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreachable: ; preds = %after.coro.free
@@ -201,7 +201,7 @@ declare token @llvm.coro.save(ptr)
declare ptr @llvm.coro.begin(token, ptr writeonly)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr nocapture readonly)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @new(i64)
declare void @delete(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-debug-spill-dbg.declare.ll b/llvm/test/Transforms/Coroutines/coro-debug-spill-dbg.declare.ll
index bd9eb2036e6fb..59a4b5b2dfbc8 100644
--- a/llvm/test/Transforms/Coroutines/coro-debug-spill-dbg.declare.ll
+++ b/llvm/test/Transforms/Coroutines/coro-debug-spill-dbg.declare.ll
@@ -74,7 +74,7 @@ cleanup: ; preds = %resume, %coro.begin
br label %suspend
suspend: ; preds = %cleanup, %coro.begin
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ %2 = call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret ptr %hdl
}
@@ -104,7 +104,7 @@ declare i1 @llvm.coro.alloc(token) #4
declare ptr @llvm.coro.begin(token, ptr writeonly) #4
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token) #4
+declare i1 @llvm.coro.end(ptr, i1, token) #4
declare noalias ptr @malloc(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-debug.ll b/llvm/test/Transforms/Coroutines/coro-debug.ll
index d1f1922c2a92f..5f8e9c9c1d16d 100644
--- a/llvm/test/Transforms/Coroutines/coro-debug.ll
+++ b/llvm/test/Transforms/Coroutines/coro-debug.ll
@@ -69,10 +69,10 @@ coro_Cleanup: ; preds = %sw.epilog, %sw.bb1
br label %coro_Suspend, !dbg !24
coro_Suspend: ; preds = %coro_Cleanup, %sw.default
- call void @llvm.coro.end(ptr null, i1 false, token none) #7, !dbg !24
- %7 = load ptr, ptr %coro_hdl, align 8, !dbg !24
+ %7 = call i1 @llvm.coro.end(ptr null, i1 false, token none) #7, !dbg !24
+ %8 = load ptr, ptr %coro_hdl, align 8, !dbg !24
store i32 0, ptr %late_local, !dbg !24
- ret ptr %7, !dbg !24
+ ret ptr %8, !dbg !24
ehcleanup:
%ex = landingpad { ptr, i32 }
@@ -110,7 +110,7 @@ declare void @free(ptr) #3
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token) #5
+declare i1 @llvm.coro.end(ptr, i1, token) #5
; Function Attrs: argmemonly nounwind readonly
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #2
diff --git a/llvm/test/Transforms/Coroutines/coro-early-twice.ll b/llvm/test/Transforms/Coroutines/coro-early-twice.ll
index e4df0071bcc93..39ec0ccc6fdb8 100644
--- a/llvm/test/Transforms/Coroutines/coro-early-twice.ll
+++ b/llvm/test/Transforms/Coroutines/coro-early-twice.ll
@@ -22,7 +22,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -33,4 +33,4 @@ declare ptr @llvm.coro.begin(token, ptr)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr)
declare void @free(ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
diff --git a/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-00.ll b/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-00.ll
index ad84f7b33dc65..2f5b989a620e0 100644
--- a/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-00.ll
+++ b/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-00.ll
@@ -65,7 +65,7 @@ cleanup: ; preds = %invoke.cont15, %if.el
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreach:
@@ -92,6 +92,6 @@ declare void @use_val(i32)
declare void @__cxa_end_catch()
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @free(ptr)
declare ptr @llvm.coro.free(token, ptr nocapture readonly)
diff --git a/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-01.ll b/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-01.ll
index 0b9bce5f9ad77..d896c6a18b233 100644
--- a/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-01.ll
+++ b/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-01.ll
@@ -59,7 +59,7 @@ cleanup: ; preds = %invoke.cont15, %if.el
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreach:
@@ -86,6 +86,6 @@ declare void @use_val(i32)
declare void @__cxa_end_catch()
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @free(ptr)
declare ptr @llvm.coro.free(token, ptr nocapture readonly)
diff --git a/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-02.ll b/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-02.ll
index 6202df1fe00e6..79aa58b85eda8 100644
--- a/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-02.ll
+++ b/llvm/test/Transforms/Coroutines/coro-eh-aware-edge-split-02.ll
@@ -59,7 +59,7 @@ cleanup: ; preds = %invoke.cont15, %if.el
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -83,6 +83,6 @@ declare void @use_val(i32)
declare void @__cxa_end_catch()
; Function Attrs: nounwind
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @free(ptr)
declare ptr @llvm.coro.free(token, ptr nocapture readonly)
diff --git a/llvm/test/Transforms/Coroutines/coro-frame-arrayalloca.ll b/llvm/test/Transforms/Coroutines/coro-frame-arrayalloca.ll
index 722ff81bc0cad..7d5ddabf7ea8e 100644
--- a/llvm/test/Transforms/Coroutines/coro-frame-arrayalloca.ll
+++ b/llvm/test/Transforms/Coroutines/coro-frame-arrayalloca.ll
@@ -30,7 +30,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -65,7 +65,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare double @print(double)
diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-00.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-00.ll
index a2c9d58469427..bf08d6ff0b205 100644
--- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-00.ll
+++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-00.ll
@@ -50,7 +50,7 @@ cleanup:
call void @free(ptr %mem)
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -66,7 +66,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare double @print(double)
diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-01.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-01.ll
index e7c28d92674ba..78c6f0cacd695 100644
--- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-01.ll
+++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-01.ll
@@ -53,7 +53,7 @@ cleanup:
call ptr @llvm.coro.free(token %0, ptr %1)
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -68,6 +68,6 @@ declare token @llvm.coro.save(ptr) #3
declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-02.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-02.ll
index b75995f3eaa8a..82657318d7785 100644
--- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-02.ll
+++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-02.ll
@@ -55,7 +55,7 @@ cleanup:
call ptr @llvm.coro.free(token %0, ptr %1)
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
; CHECK: %a.Frame = type { ptr, ptr, %"struct.task::promise_type", %struct.big_structure, i1 }
@@ -69,6 +69,6 @@ declare token @llvm.coro.save(ptr) #3
declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-03.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-03.ll
index 427d8984e126c..66d41372cd9e7 100644
--- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-03.ll
+++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-03.ll
@@ -50,7 +50,7 @@ cleanup:
call void @free(ptr %mem)
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -66,7 +66,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare double @print(double)
diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-04.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-04.ll
index 81a5dcc1d3858..6ff31e566283b 100644
--- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-04.ll
+++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-04.ll
@@ -55,7 +55,7 @@ cleanup:
call ptr @llvm.coro.free(token %0, ptr %1)
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
; CHECK: %a.Frame = type { ptr, ptr, %"struct.task::promise_type", %struct.big_structure, i1, [26 x i8], %struct.big_structure.2 }
@@ -69,6 +69,6 @@ declare token @llvm.coro.save(ptr) #3
declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-05.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-05.ll
index 6caa41f32f26e..c3da8e872dc07 100644
--- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-05.ll
+++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-05.ll
@@ -55,7 +55,7 @@ cleanup:
call ptr @llvm.coro.free(token %0, ptr %1)
br label %coro.ret
coro.ret:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
; CHECK: %a.Frame = type { ptr, ptr, %"struct.task::promise_type", i1, [14 x i8], %struct.big_structure }
@@ -69,6 +69,6 @@ declare token @llvm.coro.save(ptr) #3
declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-frame-unreachable.ll b/llvm/test/Transforms/Coroutines/coro-frame-unreachable.ll
index 3d290554e22c9..b81f7d0ed7eac 100644
--- a/llvm/test/Transforms/Coroutines/coro-frame-unreachable.ll
+++ b/llvm/test/Transforms/Coroutines/coro-frame-unreachable.ll
@@ -24,7 +24,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
no.predecessors:
@@ -43,7 +43,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i1)
diff --git a/llvm/test/Transforms/Coroutines/coro-frame.ll b/llvm/test/Transforms/Coroutines/coro-frame.ll
index d25d335fe63c6..c20be8ce2ff68 100644
--- a/llvm/test/Transforms/Coroutines/coro-frame.ll
+++ b/llvm/test/Transforms/Coroutines/coro-frame.ll
@@ -26,7 +26,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
pad:
%tok = cleanuppad within none []
@@ -58,7 +58,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare double @print(double)
diff --git a/llvm/test/Transforms/Coroutines/coro-lifetime-end.ll b/llvm/test/Transforms/Coroutines/coro-lifetime-end.ll
index 503b93ea76a02..df2ed7e4bcead 100644
--- a/llvm/test/Transforms/Coroutines/coro-lifetime-end.ll
+++ b/llvm/test/Transforms/Coroutines/coro-lifetime-end.ll
@@ -43,7 +43,7 @@ entry:
await.ready:
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -80,7 +80,7 @@ entry:
await.ready:
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
call void @llvm.lifetime.end.p0(ptr %testval)
ret void
}
@@ -128,7 +128,7 @@ if.end:
await.ready:
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -137,6 +137,6 @@ declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr)
declare ptr @llvm.coro.begin(token, ptr writeonly) #3
declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-materialize.ll b/llvm/test/Transforms/Coroutines/coro-materialize.ll
index f55db35edb3ea..3bf1360001dc7 100644
--- a/llvm/test/Transforms/Coroutines/coro-materialize.ll
+++ b/llvm/test/Transforms/Coroutines/coro-materialize.ll
@@ -41,7 +41,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -73,7 +73,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -109,7 +109,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -145,7 +145,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -186,7 +186,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -200,7 +200,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-noalias-param.ll b/llvm/test/Transforms/Coroutines/coro-noalias-param.ll
index 77068b8d75367..e48ad8fddd5fe 100644
--- a/llvm/test/Transforms/Coroutines/coro-noalias-param.ll
+++ b/llvm/test/Transforms/Coroutines/coro-noalias-param.ll
@@ -19,7 +19,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret void
}
@@ -33,7 +33,7 @@ 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 void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-only-destroy-when-complete.ll b/llvm/test/Transforms/Coroutines/coro-only-destroy-when-complete.ll
index e40ac4e0ec162..c3d0fb1a18dd2 100644
--- a/llvm/test/Transforms/Coroutines/coro-only-destroy-when-complete.ll
+++ b/llvm/test/Transforms/Coroutines/coro-only-destroy-when-complete.ll
@@ -90,7 +90,7 @@ coro.free: ; preds = %cleanup62
br label %coro.ret
coro.ret: ; preds = %coro.free, %cleanup62, %final.suspend, %await2.suspend, %await.suspend, %init.suspend
- call void @llvm.coro.end(ptr null, i1 false, token none) #12
+ %19 = call i1 @llvm.coro.end(ptr null, i1 false, token none) #12
ret ptr %__promise
}
@@ -106,7 +106,7 @@ declare i8 @llvm.coro.suspend(token, i1) #3
declare ptr @_Z5Innerv() local_unnamed_addr
declare dso_local void @_ZdlPv(ptr noundef) local_unnamed_addr #8
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @exit(i32 noundef)
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #10
declare void @dtor1()
diff --git a/llvm/test/Transforms/Coroutines/coro-padding.ll b/llvm/test/Transforms/Coroutines/coro-padding.ll
index 1de12a4f44a57..452b83bad388a 100644
--- a/llvm/test/Transforms/Coroutines/coro-padding.ll
+++ b/llvm/test/Transforms/Coroutines/coro-padding.ll
@@ -26,7 +26,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -54,7 +54,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare double @print(double)
diff --git a/llvm/test/Transforms/Coroutines/coro-param-copy.ll b/llvm/test/Transforms/Coroutines/coro-param-copy.ll
index f0e816bba9584..717ca46651414 100644
--- a/llvm/test/Transforms/Coroutines/coro-param-copy.ll
+++ b/llvm/test/Transforms/Coroutines/coro-param-copy.ll
@@ -41,7 +41,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -83,7 +83,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
diff --git a/llvm/test/Transforms/Coroutines/coro-readnone-02.ll b/llvm/test/Transforms/Coroutines/coro-readnone-02.ll
index 3ada99070967c..4ed962816154b 100644
--- a/llvm/test/Transforms/Coroutines/coro-readnone-02.ll
+++ b/llvm/test/Transforms/Coroutines/coro-readnone-02.ll
@@ -39,7 +39,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -75,7 +75,7 @@ declare i8 @llvm.coro.suspend(token, i1)
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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @free(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-readnone.ll b/llvm/test/Transforms/Coroutines/coro-readnone.ll
index 321ddab3ae4d7..1fc91cefaf975 100644
--- a/llvm/test/Transforms/Coroutines/coro-readnone.ll
+++ b/llvm/test/Transforms/Coroutines/coro-readnone.ll
@@ -33,7 +33,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -83,7 +83,7 @@ declare i8 @llvm.coro.suspend(token, i1)
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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @free(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll b/llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll
index 94ed43ee43f2e..b23c5222a3deb 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-alloca-opaque-ptr.ll
@@ -34,7 +34,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -69,7 +69,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -77,7 +77,7 @@ declare token @llvm.coro.id.retcon(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i1 @llvm.coro.suspend.retcon.i1(...)
declare void @llvm.coro.suspend.retcon.isVoid(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare token @llvm.coro.alloca.alloc.i32(i32, i32)
declare ptr @llvm.coro.alloca.get(token)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-alloca.ll b/llvm/test/Transforms/Coroutines/coro-retcon-alloca.ll
index 6caa571cf1bbc..aeb959e5ce711 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-alloca.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-alloca.ll
@@ -33,7 +33,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -69,7 +69,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -102,7 +102,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -170,7 +170,7 @@ forward:
br label %back
end:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -217,7 +217,7 @@ non_alloca_block:
br label %suspend
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -225,7 +225,7 @@ declare token @llvm.coro.id.retcon(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i1 @llvm.coro.suspend.retcon.i1(...)
declare void @llvm.coro.suspend.retcon.isVoid(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare token @llvm.coro.alloca.alloc.i32(i32, i32)
declare ptr @llvm.coro.alloca.get(token)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-frame.ll b/llvm/test/Transforms/Coroutines/coro-retcon-frame.ll
index 780f24e124a51..a81cdf475ae31 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-frame.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-frame.ll
@@ -32,7 +32,7 @@ resume:
br label %end
end:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
; Make sure we don't lose writes to the frame.
@@ -52,5 +52,5 @@ end:
declare token @llvm.coro.id.retcon.once(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i1 @llvm.coro.suspend.retcon.i1(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-once-private.ll b/llvm/test/Transforms/Coroutines/coro-retcon-once-private.ll
index 35eb2e4df705b..e7593cc8c6f81 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-once-private.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-once-private.ll
@@ -30,14 +30,14 @@ neg.cont:
br label %cleanup
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
declare token @llvm.coro.id.retcon.once(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i1 @llvm.coro.suspend.retcon.i1(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare void @prototype(ptr, i1 zeroext)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-once-value.ll b/llvm/test/Transforms/Coroutines/coro-retcon-once-value.ll
index 026e23913d647..fa10ddefee00e 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-once-value.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-once-value.ll
@@ -29,7 +29,7 @@ neg.cont:
br label %cleanup
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -72,7 +72,7 @@ neg.cont:
cleanup:
%new.val = add i32 %val, 123
%tok = call token (...) @llvm.coro.end.results(ptr null, i32 %new.val, ptr @deallocate)
- call void @llvm.coro.end(ptr %hdl, i1 0, token %tok)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token %tok)
unreachable
}
@@ -96,7 +96,7 @@ entry:
declare token @llvm.coro.id.retcon.once(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i1 @llvm.coro.suspend.retcon.i1(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare token @llvm.coro.end.results(...)
declare ptr @llvm.coro.prepare.retcon(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-once-value2.ll b/llvm/test/Transforms/Coroutines/coro-retcon-once-value2.ll
index aad762e2c9335..c33e60e98cd8b 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-once-value2.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-once-value2.ll
@@ -19,7 +19,7 @@ cont:
br label %cleanup
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -41,7 +41,7 @@ cont:
cleanup:
%tok = call token (...) @llvm.coro.end.results(i8 %val)
- call void @llvm.coro.end(ptr %hdl, i1 0, token %tok)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token %tok)
unreachable
}
@@ -63,7 +63,7 @@ cont:
cleanup:
%tok = call token (...) @llvm.coro.end.results(ptr null, i32 123, ptr @deallocate)
- call void @llvm.coro.end(ptr %hdl, i1 0, token %tok)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token %tok)
unreachable
}
@@ -71,7 +71,7 @@ cleanup:
declare token @llvm.coro.id.retcon.once(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i1 @llvm.coro.suspend.retcon.i1(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare token @llvm.coro.end.results(...)
declare void @prototype(ptr, i1 zeroext)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-opaque-ptr.ll b/llvm/test/Transforms/Coroutines/coro-retcon-opaque-ptr.ll
index 5484fec1b3ce4..1908b31f52db3 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-opaque-ptr.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-opaque-ptr.ll
@@ -26,7 +26,7 @@ resume: ; preds = %loop
br label %loop
cleanup: ; preds = %loop
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ %0 = call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
unreachable
}
@@ -72,14 +72,14 @@ resume: ; preds = %loop
br label %loop
cleanup: ; preds = %loop
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ %0 = call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
unreachable
}
declare token @llvm.coro.id.retcon(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i1 @llvm.coro.suspend.retcon.i1(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare ptr @prototype(ptr, i1 zeroext)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-remat.ll b/llvm/test/Transforms/Coroutines/coro-retcon-remat.ll
index 160754e7d11c3..fd16ba96181b9 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-remat.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-remat.ll
@@ -31,14 +31,14 @@ resume1:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
declare token @llvm.coro.id.retcon(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i1 @llvm.coro.suspend.retcon.i1(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare { ptr, i32 } @f_prototype(ptr, i1 zeroext)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-resume-values.ll b/llvm/test/Transforms/Coroutines/coro-retcon-resume-values.ll
index 2f04453d69c4b..907d7e588ffe0 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-resume-values.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-resume-values.ll
@@ -27,7 +27,7 @@ resume:
cleanup:
call void @print(i32 %n.val)
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -66,7 +66,7 @@ entry:
declare token @llvm.coro.id.retcon(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare { i32, i1 } @llvm.coro.suspend.retcon.sl_i32i1s(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare ptr @prototype(ptr, i32, i1 zeroext)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-resume-values2.ll b/llvm/test/Transforms/Coroutines/coro-retcon-resume-values2.ll
index a19c1ca0e7f3a..2caa6430ca012 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-resume-values2.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-resume-values2.ll
@@ -15,14 +15,14 @@ entry:
%sum4 = call i32 @add(i32 %sum3, i32 %value1)
%sum5 = call i32 @add(i32 %sum4, i32 %value2)
call void @print(i32 %sum5)
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
declare token @llvm.coro.id.retcon(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i32 @llvm.coro.suspend.retcon.i32(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare ptr @prototype(ptr, i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-unreachable.ll b/llvm/test/Transforms/Coroutines/coro-retcon-unreachable.ll
index 6e4a287e53b0a..31839aa2a2b5f 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-unreachable.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-unreachable.ll
@@ -23,7 +23,7 @@ define hidden swiftcc { ptr, ptr } @no_suspends(ptr %buffer, i64 %arg) #1 {
bb1:
call void @print(i64 %arg)
- call void @llvm.coro.end(ptr %begin, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %begin, i1 false, token none)
unreachable
}
@@ -41,7 +41,7 @@ declare void @llvm.lifetime.start.p0(ptr nocapture) #6
declare i1 @llvm.coro.suspend.retcon.i1(...) #5
declare void @llvm.lifetime.end.p0(ptr nocapture) #6
declare void @llvm.coro.alloca.free(token) #5
-declare void @llvm.coro.end(ptr, i1, token) #5
+declare i1 @llvm.coro.end(ptr, i1, token) #5
declare void @llvm.trap()
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-value.ll b/llvm/test/Transforms/Coroutines/coro-retcon-value.ll
index d456c3b1cb2a3..6a150c6a79807 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon-value.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon-value.ll
@@ -25,7 +25,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -64,7 +64,7 @@ entry:
declare token @llvm.coro.id.retcon(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i8 @llvm.coro.suspend.retcon.i8(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare {ptr, i32} @prototype(ptr, i8 zeroext)
diff --git a/llvm/test/Transforms/Coroutines/coro-retcon.ll b/llvm/test/Transforms/Coroutines/coro-retcon.ll
index 86eba3b5d134f..e0484c6d66941 100644
--- a/llvm/test/Transforms/Coroutines/coro-retcon.ll
+++ b/llvm/test/Transforms/Coroutines/coro-retcon.ll
@@ -33,7 +33,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -105,7 +105,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -139,14 +139,14 @@ cleanup:
call void @use_var_ptr(ptr %a)
%al = load i32, ptr %a
call void @use_var(i32 %al)
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
declare token @llvm.coro.id.retcon(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare i1 @llvm.coro.suspend.retcon.i1(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare void @use_var(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-spill-after-phi.ll b/llvm/test/Transforms/Coroutines/coro-spill-after-phi.ll
index 273ac7c5293d9..bb43d8f4b3399 100644
--- a/llvm/test/Transforms/Coroutines/coro-spill-after-phi.ll
+++ b/llvm/test/Transforms/Coroutines/coro-spill-after-phi.ll
@@ -50,7 +50,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -63,7 +63,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare i32 @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-spill-corobegin.ll b/llvm/test/Transforms/Coroutines/coro-spill-corobegin.ll
index bfc48adfed22a..f238955d1c3e9 100644
--- a/llvm/test/Transforms/Coroutines/coro-spill-corobegin.ll
+++ b/llvm/test/Transforms/Coroutines/coro-spill-corobegin.ll
@@ -33,7 +33,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -62,7 +62,7 @@ declare i8 @llvm.coro.suspend(token, i1)
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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print.i32(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-spill-defs-before-corobegin.ll b/llvm/test/Transforms/Coroutines/coro-spill-defs-before-corobegin.ll
index 16df22b19fd11..801c4a1776135 100644
--- a/llvm/test/Transforms/Coroutines/coro-spill-defs-before-corobegin.ll
+++ b/llvm/test/Transforms/Coroutines/coro-spill-defs-before-corobegin.ll
@@ -36,7 +36,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
lpad:
@@ -70,7 +70,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare i32 @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-spill-promise-02.ll b/llvm/test/Transforms/Coroutines/coro-spill-promise-02.ll
index a3888f0eff562..3293e5c84b987 100644
--- a/llvm/test/Transforms/Coroutines/coro-spill-promise-02.ll
+++ b/llvm/test/Transforms/Coroutines/coro-spill-promise-02.ll
@@ -29,7 +29,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -57,7 +57,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare double @print(double)
diff --git a/llvm/test/Transforms/Coroutines/coro-spill-promise.ll b/llvm/test/Transforms/Coroutines/coro-spill-promise.ll
index 344d77bd54930..47e891a57d222 100644
--- a/llvm/test/Transforms/Coroutines/coro-spill-promise.ll
+++ b/llvm/test/Transforms/Coroutines/coro-spill-promise.ll
@@ -28,7 +28,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -48,7 +48,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare double @print(double)
diff --git a/llvm/test/Transforms/Coroutines/coro-spill-suspend.ll b/llvm/test/Transforms/Coroutines/coro-spill-suspend.ll
index 6a80f3637fd10..8de02c8b7de23 100644
--- a/llvm/test/Transforms/Coroutines/coro-spill-suspend.ll
+++ b/llvm/test/Transforms/Coroutines/coro-spill-suspend.ll
@@ -49,7 +49,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
diff --git a/llvm/test/Transforms/Coroutines/coro-split-00.ll b/llvm/test/Transforms/Coroutines/coro-split-00.ll
index 06f71c848e250..9909627e60597 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-00.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-00.ll
@@ -28,7 +28,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -86,7 +86,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32) allockind("alloc,uninitialized") "alloc-family"="malloc"
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-01.ll b/llvm/test/Transforms/Coroutines/coro-split-01.ll
index e74e927839dff..7a03495e75d8d 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-01.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-01.ll
@@ -26,7 +26,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
define i32 @main() {
@@ -49,7 +49,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-02.ll b/llvm/test/Transforms/Coroutines/coro-split-02.ll
index a11ea466af29c..c487ab1e42ff6 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-02.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-02.ll
@@ -34,7 +34,7 @@ await.ready:
call void @print(i32 %val)
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -60,6 +60,6 @@ declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare void @"\01??3 at YAXPEAX@Z"(ptr) local_unnamed_addr #10
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-split-alloc.ll b/llvm/test/Transforms/Coroutines/coro-split-alloc.ll
index 9a5e97fedd97d..f6f50e2f3c76c 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-alloc.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-alloc.ll
@@ -33,7 +33,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -57,7 +57,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @custom_alloctor(i32, i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-dbg-labels-inlined.ll b/llvm/test/Transforms/Coroutines/coro-split-dbg-labels-inlined.ll
index 995795b8de1fa..e9737b62b0b8f 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-dbg-labels-inlined.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-dbg-labels-inlined.ll
@@ -28,7 +28,7 @@ coro_Cleanup:
br label %coro_Suspend, !dbg !37
coro_Suspend:
- tail call void @llvm.coro.end(ptr null, i1 false, token none) #3, !dbg !40
+ tail call i1 @llvm.coro.end(ptr null, i1 false, token none) #3, !dbg !40
ret ptr %2, !dbg !41
}
@@ -60,7 +60,7 @@ declare token @llvm.coro.save(ptr) #0
declare i8 @llvm.coro.suspend(token, i1) #0
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #4
declare void @free(ptr nocapture) local_unnamed_addr #0
-declare void @llvm.coro.end(ptr, i1, token) #0
+declare i1 @llvm.coro.end(ptr, i1, token) #0
attributes #0 = { nounwind }
attributes #1 = { nounwind readnone }
diff --git a/llvm/test/Transforms/Coroutines/coro-split-dbg-labels.ll b/llvm/test/Transforms/Coroutines/coro-split-dbg-labels.ll
index 4c5d9fb81c272..490e4fc102349 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-dbg-labels.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-dbg-labels.ll
@@ -64,7 +64,7 @@ coro_Cleanup: ; preds = %for.cond
br label %coro_Suspend, !dbg !37
coro_Suspend: ; preds = %for.cond, %if.then, %coro_Cleanup
- tail call void @llvm.coro.end(ptr null, i1 false, token none) #3, !dbg !40
+ tail call i1 @llvm.coro.end(ptr null, i1 false, token none) #3, !dbg !40
ret ptr %2, !dbg !41
}
@@ -115,7 +115,7 @@ declare token @llvm.coro.save(ptr) #0
declare i8 @llvm.coro.suspend(token, i1) #0
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #4
declare void @free(ptr nocapture) local_unnamed_addr #0
-declare void @llvm.coro.end(ptr, i1, token) #0
+declare i1 @llvm.coro.end(ptr, i1, token) #0
attributes #0 = { nounwind }
attributes #1 = { nounwind readnone }
diff --git a/llvm/test/Transforms/Coroutines/coro-split-dbg.ll b/llvm/test/Transforms/Coroutines/coro-split-dbg.ll
index c53bea899ee51..02bd2b2d0d65f 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-dbg.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-dbg.ll
@@ -38,7 +38,7 @@ coro_Cleanup: ; preds = %for.cond
br label %coro_Suspend, !dbg !36
coro_Suspend: ; preds = %for.cond, %if.then, %coro_Cleanup
- tail call void @llvm.coro.end(ptr null, i1 false, token none) #9, !dbg !38
+ tail call i1 @llvm.coro.end(ptr null, i1 false, token none) #9, !dbg !38
ret ptr %2, !dbg !39
}
@@ -57,7 +57,7 @@ declare i8 @llvm.coro.suspend(token, i1) #7
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #5
declare void @free(ptr nocapture) local_unnamed_addr #6
-declare void @llvm.coro.end(ptr, i1, token) #7
+declare i1 @llvm.coro.end(ptr, i1, token) #7
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #5
declare void @llvm.dbg.value(metadata, metadata, metadata) #1
diff --git a/llvm/test/Transforms/Coroutines/coro-split-eh-00.ll b/llvm/test/Transforms/Coroutines/coro-split-eh-00.ll
index 0695071306d8d..d7d60bb2bfa22 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-eh-00.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-eh-00.ll
@@ -17,7 +17,7 @@ resume:
invoke void @print(i32 1) to label %suspend unwind label %lpad
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
call void @print(i32 0) ; should not be present in f.resume
ret ptr %hdl
@@ -26,9 +26,8 @@ lpad:
cleanup
call void @print(i32 2)
- call void @llvm.coro.end(ptr null, i1 true, token none)
- %in.ramp = call i1 @llvm.coro.is_in_ramp()
- br i1 %in.ramp, label %cleanup.cont, label %eh.resume
+ %need.resume = call i1 @llvm.coro.end(ptr null, i1 true, token none)
+ br i1 %need.resume, label %eh.resume, label %cleanup.cont
cleanup.cont:
call void @print(i32 3) ; should not be present in f.resume
@@ -81,7 +80,7 @@ declare void @llvm.coro.destroy(ptr)
declare token @llvm.coro.id(i32, ptr, ptr, ptr)
declare ptr @llvm.coro.alloc(token)
declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-eh-01.ll b/llvm/test/Transforms/Coroutines/coro-split-eh-01.ll
index 093fd85b80cdd..b25c4b9f5a700 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-eh-01.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-eh-01.ll
@@ -17,14 +17,14 @@ resume:
invoke void @print(i32 1) to label %suspend unwind label %lpad
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
call void @print(i32 0) ; should not be present in f.resume
ret ptr %hdl
lpad:
%tok = cleanuppad within none []
call void @print(i32 2)
- call void @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %tok) ]
+ %unused = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %tok) ]
cleanupret from %tok unwind label %cleanup.cont
cleanup.cont:
@@ -74,7 +74,7 @@ declare void @llvm.coro.destroy(ptr)
declare token @llvm.coro.id(i32, ptr, ptr, ptr)
declare ptr @llvm.coro.alloc(token)
declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-final-suspend.ll b/llvm/test/Transforms/Coroutines/coro-split-final-suspend.ll
index b620b2d7fa4be..fbefd43f73c36 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-final-suspend.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-final-suspend.ll
@@ -28,7 +28,7 @@ resume:
invoke void @print(i32 1) to label %suspend unwind label %lpad
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
call void @print(i32 0)
ret ptr %hdl
@@ -37,9 +37,8 @@ lpad:
cleanup
call void @print(i32 2)
- call void @llvm.coro.end(ptr null, i1 true, token none)
- %in.ramp = call i1 @llvm.coro.is_in_ramp()
- br i1 %in.ramp, label %cleanup.cont, label %eh.resume
+ %need.resume = call i1 @llvm.coro.end(ptr null, i1 true, token none)
+ br i1 %need.resume, label %eh.resume, label %cleanup.cont
cleanup.cont:
call void @print(i32 3)
@@ -98,7 +97,7 @@ resume:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
call void @print(i32 0)
ret ptr %hdl
}
@@ -123,7 +122,7 @@ declare void @llvm.coro.destroy(ptr)
declare token @llvm.coro.id(i32, ptr, ptr, ptr)
declare ptr @llvm.coro.alloc(token)
declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-hidden.ll b/llvm/test/Transforms/Coroutines/coro-split-hidden.ll
index 2c1bf35c2fafc..fa4f0ab13bebc 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-hidden.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-hidden.ll
@@ -30,7 +30,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -74,7 +74,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32) allockind("alloc,uninitialized")
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail-chain-pgo-counter-promo.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail-chain-pgo-counter-promo.ll
index 70f15f6129d8e..e661932bf020e 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail-chain-pgo-counter-promo.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail-chain-pgo-counter-promo.ll
@@ -24,7 +24,7 @@ declare void @llvm.assume(i1 noundef)
declare i64 @llvm.coro.align.i64()
declare i1 @llvm.coro.alloc(token)
declare ptr @llvm.coro.begin(token, ptr writeonly)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.free(token, ptr nocapture readonly)
declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr)
declare token @llvm.coro.save(ptr)
@@ -162,7 +162,7 @@ define ptr @f(i32 %0) presplitcoroutine align 32 {
61: ; preds = %60, %57, %54, %47, %12
%62 = getelementptr inbounds i8, ptr %3, i64 -16
- call void @llvm.coro.end(ptr null, i1 false, token none) #28
+ %63 = call i1 @llvm.coro.end(ptr null, i1 false, token none) #28
ret ptr %62
}
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail-ppc64le.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail-ppc64le.ll
index cb3a12952d7e5..e8596b78460a5 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail-ppc64le.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail-ppc64le.ll
@@ -36,7 +36,7 @@ await.ready:
i8 1, label %exit
]
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -58,7 +58,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail.ll
index d224d17fb52ea..70f29f4a9a4dc 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail.ll
@@ -27,7 +27,7 @@ await.ready:
i8 1, label %exit
]
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -50,7 +50,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare ptr @await_suspend_function(ptr %awaiter, ptr %hdl)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail1.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail1.ll
index 4228a9db64866..3edb8728d8550 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail1.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail1.ll
@@ -45,7 +45,7 @@ final.suspend:
pre.exit:
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreach:
unreachable
@@ -83,7 +83,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare i8 @switch_result()
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail10.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail10.ll
index 7bf0d72facb28..a55b3d16e2ded 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail10.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail10.ll
@@ -33,7 +33,7 @@ await.ready:
i8 1, label %exit
]
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -47,7 +47,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare ptr @await_suspend_function(ptr %awaiter, ptr %hdl)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail12.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail12.ll
index c818d1c2b144c..5baec378876bb 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail12.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail12.ll
@@ -56,7 +56,7 @@ coro.free:
br label %coro.end
coro.end:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -73,7 +73,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare void @delete(ptr nonnull) #2
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail13.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail13.ll
index c726810e25d13..0290e42339e2a 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail13.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail13.ll
@@ -39,7 +39,7 @@ lpad:
%lpval = landingpad { ptr, i32 }
cleanup
- call void @llvm.coro.end(ptr null, i1 true, token none)
+ %need.resume = call i1 @llvm.coro.end(ptr null, i1 true, token none)
resume { ptr, i32 } %lpval
coro.free:
@@ -47,7 +47,7 @@ coro.free:
br label %coro.end
coro.end:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -64,7 +64,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare void @delete(ptr nonnull) #2
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail2.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail2.ll
index 04d2352107041..ca1611e19b9f9 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail2.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail2.ll
@@ -31,7 +31,7 @@ await.ready:
i8 1, label %exit
]
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -54,7 +54,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare ptr @await_suspend_function(ptr %awaiter, ptr %hdl)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail3.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail3.ll
index 558e38b3919fb..84cdac17beebb 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail3.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail3.ll
@@ -41,7 +41,7 @@ final.suspend:
pre.exit:
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
unreach:
unreachable
@@ -78,7 +78,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare i8 @switch_result()
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail4.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail4.ll
index 97cd6fb4375f1..b647bd2e4a207 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail4.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail4.ll
@@ -38,7 +38,7 @@ coro.free:
br label %coro.end
coro.end:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -54,7 +54,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare void @delete(ptr nonnull) #2
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail5.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail5.ll
index 9a2697efa1f2b..b2561751e6377 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail5.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail5.ll
@@ -32,7 +32,7 @@ await.ready:
call void @llvm.lifetime.end.p0(ptr %alloc.var)
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -49,7 +49,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare void @consume(ptr)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail6.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail6.ll
index 36ae55e9e69e3..99174ff283120 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail6.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail6.ll
@@ -36,7 +36,7 @@ await.ready:
call void @llvm.lifetime.end.p0(ptr %alloc.var)
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -84,7 +84,7 @@ coro.free:
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -101,7 +101,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare void @delete(ptr nonnull) #2
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail7.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail7.ll
index 8b67ccb8b8718..91f8543dffe93 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail7.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail7.ll
@@ -40,7 +40,7 @@ await.ready:
br label %exit
exit:
%result = phi i64 [0, %entry], [0, %entry], [%foo, %await.suspend], [%foo, %await.suspend], [%foo, %await.ready]
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret i64 %result
}
@@ -90,7 +90,7 @@ coro.free:
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -109,7 +109,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare void @delete(ptr nonnull) #2
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail8.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail8.ll
index 5eeaf9db83118..31b18d746be5f 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail8.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail8.ll
@@ -32,7 +32,7 @@ await.ready:
i8 1, label %exit
]
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -46,7 +46,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare void @print()
diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail9.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail9.ll
index 2906877df924b..76376dbbbe3d8 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-musttail9.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-musttail9.ll
@@ -32,7 +32,7 @@ await.ready:
i8 1, label %exit
]
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -46,7 +46,7 @@ declare token @llvm.coro.save(ptr) #2
declare ptr @llvm.coro.frame() #3
declare i8 @llvm.coro.suspend(token, i1) #2
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #1
-declare void @llvm.coro.end(ptr, i1, token) #2
+declare i1 @llvm.coro.end(ptr, i1, token) #2
declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1
declare ptr @malloc(i64)
declare void @print()
diff --git a/llvm/test/Transforms/Coroutines/coro-split-no-lifetime.ll b/llvm/test/Transforms/Coroutines/coro-split-no-lifetime.ll
index 8c081f324e0cc..12d65647c8b01 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-no-lifetime.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-no-lifetime.ll
@@ -37,7 +37,7 @@ cleanup:
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -52,7 +52,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.lifetime.start.p0(ptr nocapture)
declare void @llvm.lifetime.end.p0(ptr nocapture)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-noinline.ll b/llvm/test/Transforms/Coroutines/coro-split-noinline.ll
index 498bb4745d43c..c53771570a079 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-noinline.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-noinline.ll
@@ -29,7 +29,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -53,7 +53,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32) allockind("alloc,uninitialized") "alloc-family"="malloc"
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll
index 848cf8b3e461f..a5a2bcf2ecb81 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll
@@ -37,7 +37,7 @@ await.ready:
call void @print(i32 %val)
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -76,7 +76,7 @@ await.ready:
call void @print(i32 %val)
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -91,6 +91,6 @@ declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare void @"\01??3 at YAXPEAX@Z"(ptr) local_unnamed_addr #10
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll
index 26037043a26ed..abc91c3b11c6b 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll
@@ -48,7 +48,7 @@ after.await:
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -68,6 +68,6 @@ declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare void @"\01??3 at YAXPEAX@Z"(ptr) local_unnamed_addr #10
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-03.ll b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-03.ll
index 26c4c72ef0726..efd1adfc54b53 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-03.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-03.ll
@@ -36,7 +36,7 @@ await.ready:
call void @print(i32 %val)
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
; CHECK-LABEL: @a.gep.resume(
@@ -59,6 +59,6 @@ declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare void @"\01??3 at YAXPEAX@Z"(ptr) local_unnamed_addr #10
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-04.ll b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-04.ll
index be4bf4c14737c..af5aa8ade0b65 100644
--- a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-04.ll
+++ b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-04.ll
@@ -35,7 +35,7 @@ await.ready:
call void @print(i32 %val)
br label %exit
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret void
}
@@ -61,6 +61,6 @@ declare ptr @llvm.coro.frame() #5
declare i8 @llvm.coro.suspend(token, i1) #3
declare void @"\01??3 at YAXPEAX@Z"(ptr) local_unnamed_addr #10
declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2
-declare void @llvm.coro.end(ptr, i1, token) #3
+declare i1 @llvm.coro.end(ptr, i1, token) #3
declare void @llvm.lifetime.start.p0(ptr nocapture) #4
declare void @llvm.lifetime.end.p0(ptr nocapture) #4
diff --git a/llvm/test/Transforms/Coroutines/coro-swifterror.ll b/llvm/test/Transforms/Coroutines/coro-swifterror.ll
index 76a4816219ffd..899be4a010326 100644
--- a/llvm/test/Transforms/Coroutines/coro-swifterror.ll
+++ b/llvm/test/Transforms/Coroutines/coro-swifterror.ll
@@ -34,7 +34,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -76,7 +76,7 @@ resume:
br label %loop
cleanup:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
unreachable
}
@@ -86,7 +86,7 @@ declare token @llvm.coro.id.retcon(i32, i32, ptr, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
declare { i1, ptr } @llvm.coro.suspend.retcon.i1p0p0i8(...)
declare i1 @llvm.coro.suspend.retcon.i1(...)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.prepare.retcon(ptr)
declare ptr @f_prototype(ptr, i1 zeroext, ptr swifterror)
diff --git a/llvm/test/Transforms/Coroutines/coro-zero-alloca.ll b/llvm/test/Transforms/Coroutines/coro-zero-alloca.ll
index d1d826c7f1009..e3f09ba29cbf7 100644
--- a/llvm/test/Transforms/Coroutines/coro-zero-alloca.ll
+++ b/llvm/test/Transforms/Coroutines/coro-zero-alloca.ll
@@ -9,7 +9,7 @@ declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr)
declare i64 @llvm.coro.size.i64()
declare ptr @llvm.coro.begin(token, ptr writeonly)
declare i8 @llvm.coro.suspend(token, i1)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.free(token, ptr nocapture readonly)
declare token @llvm.coro.save(ptr)
@@ -42,7 +42,7 @@ wakeup: ; preds = %entry
br label %cleanup
suspend: ; preds = %cleanup, %entry
- call void @llvm.coro.end(ptr %coro.state, i1 false, token none)
+ %unused = call i1 @llvm.coro.end(ptr %coro.state, i1 false, token none)
ret void
cleanup: ; preds = %wakeup, %entry
diff --git a/llvm/test/Transforms/Coroutines/ex0.ll b/llvm/test/Transforms/Coroutines/ex0.ll
index 420379ed5620a..9809488c85b37 100644
--- a/llvm/test/Transforms/Coroutines/ex0.ll
+++ b/llvm/test/Transforms/Coroutines/ex0.ll
@@ -24,7 +24,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -52,7 +52,7 @@ declare void @llvm.coro.resume(ptr)
declare void @llvm.coro.destroy(ptr)
declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/ex1.ll b/llvm/test/Transforms/Coroutines/ex1.ll
index 0a9b15641f2e6..2db5ef6067cad 100644
--- a/llvm/test/Transforms/Coroutines/ex1.ll
+++ b/llvm/test/Transforms/Coroutines/ex1.ll
@@ -20,7 +20,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret ptr %hdl
}
@@ -48,7 +48,7 @@ declare i32 @llvm.coro.size.i32()
declare ptr @llvm.coro.begin(token, ptr)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.coro.resume(ptr)
declare void @llvm.coro.destroy(ptr)
diff --git a/llvm/test/Transforms/Coroutines/ex2.ll b/llvm/test/Transforms/Coroutines/ex2.ll
index fb4eeb5ee8bbc..d9999d46b38cf 100644
--- a/llvm/test/Transforms/Coroutines/ex2.ll
+++ b/llvm/test/Transforms/Coroutines/ex2.ll
@@ -29,7 +29,7 @@ dyn.free:
call void @CustomFree(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret ptr %hdl
}
@@ -63,7 +63,7 @@ declare i32 @llvm.coro.size.i32()
declare ptr @llvm.coro.begin(token, ptr)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.coro.resume(ptr)
declare void @llvm.coro.destroy(ptr)
diff --git a/llvm/test/Transforms/Coroutines/ex3.ll b/llvm/test/Transforms/Coroutines/ex3.ll
index 3b3c579625df8..e7fbc97d8f14f 100644
--- a/llvm/test/Transforms/Coroutines/ex3.ll
+++ b/llvm/test/Transforms/Coroutines/ex3.ll
@@ -32,7 +32,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret ptr %hdl
}
@@ -67,7 +67,7 @@ declare i32 @llvm.coro.size.i32()
declare ptr @llvm.coro.begin(token, ptr)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.coro.resume(ptr)
declare void @llvm.coro.destroy(ptr)
diff --git a/llvm/test/Transforms/Coroutines/ex4.ll b/llvm/test/Transforms/Coroutines/ex4.ll
index fa7b64b1379f6..7c7a869e4a500 100644
--- a/llvm/test/Transforms/Coroutines/ex4.ll
+++ b/llvm/test/Transforms/Coroutines/ex4.ll
@@ -27,7 +27,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret ptr %hdl
}
@@ -63,7 +63,7 @@ declare i32 @llvm.coro.size.i32()
declare ptr @llvm.coro.begin(token, ptr)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare void @llvm.coro.resume(ptr)
declare void @llvm.coro.destroy(ptr)
diff --git a/llvm/test/Transforms/Coroutines/ex5.ll b/llvm/test/Transforms/Coroutines/ex5.ll
index 3640b83ceb28b..bf5cbec266c91 100644
--- a/llvm/test/Transforms/Coroutines/ex5.ll
+++ b/llvm/test/Transforms/Coroutines/ex5.ll
@@ -31,7 +31,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret ptr %hdl
}
@@ -46,7 +46,7 @@ declare ptr @llvm.coro.begin(token, ptr)
declare token @llvm.coro.save(ptr)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
; CHECK-LABEL: @main
define i32 @main() {
diff --git a/llvm/test/Transforms/Coroutines/no-suspend.ll b/llvm/test/Transforms/Coroutines/no-suspend.ll
index c08423d6053fc..fd8c5ac990958 100644
--- a/llvm/test/Transforms/Coroutines/no-suspend.ll
+++ b/llvm/test/Transforms/Coroutines/no-suspend.ll
@@ -32,7 +32,7 @@ dyn.free:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret void
}
@@ -81,7 +81,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret void
}
@@ -129,7 +129,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret void
lpad:
%lpval = landingpad { ptr, i32 }
@@ -190,7 +190,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret void
}
@@ -244,7 +244,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret void
}
@@ -291,7 +291,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret void
lpad:
%lpval = landingpad { ptr, i32 }
@@ -343,7 +343,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret void
}
@@ -388,7 +388,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
ret void
lpad:
%lpval = landingpad { ptr, i32 }
@@ -410,7 +410,7 @@ declare ptr @llvm.coro.begin(token, ptr)
declare token @llvm.coro.save(ptr %hdl)
declare i8 @llvm.coro.suspend(token, i1)
declare ptr @llvm.coro.free(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.subfn.addr(ptr, i8)
diff --git a/llvm/test/Transforms/Coroutines/phi-coro-end.ll b/llvm/test/Transforms/Coroutines/phi-coro-end.ll
index adfcba01d6119..aab76faed3f1a 100644
--- a/llvm/test/Transforms/Coroutines/phi-coro-end.ll
+++ b/llvm/test/Transforms/Coroutines/phi-coro-end.ll
@@ -17,7 +17,7 @@ cleanup:
suspend:
%r = phi i32 [%n, %entry], [1, %cleanup]
- call void @llvm.coro.end(ptr %hdl, i1 false, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 false, token none)
call void @print(i32 %r)
ret ptr %hdl
}
@@ -41,7 +41,7 @@ declare void @llvm.coro.destroy(ptr)
declare token @llvm.coro.id(i32, ptr, ptr, ptr)
declare ptr @llvm.coro.begin(token, ptr)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/remarks.ll b/llvm/test/Transforms/Coroutines/remarks.ll
index 418a75cde49c9..5eaddbfc3d107 100644
--- a/llvm/test/Transforms/Coroutines/remarks.ll
+++ b/llvm/test/Transforms/Coroutines/remarks.ll
@@ -33,7 +33,7 @@ cleanup:
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0, token none)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0, token none)
ret ptr %hdl
}
@@ -60,7 +60,7 @@ 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.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare noalias ptr @malloc(i32)
declare void @print(i32)
diff --git a/llvm/test/Transforms/Coroutines/swift-async-dbg.ll b/llvm/test/Transforms/Coroutines/swift-async-dbg.ll
index 00138c091890f..5090274ea3ad4 100644
--- a/llvm/test/Transforms/Coroutines/swift-async-dbg.ll
+++ b/llvm/test/Transforms/Coroutines/swift-async-dbg.ll
@@ -73,7 +73,7 @@ define swifttailcc void @coroutineA(ptr swiftasync %arg) !dbg !48 {
%i33 = call { ptr } (i32, ptr, ptr, ...) @llvm.coro.suspend.async.sl_p0s(i32 0, ptr %i31, ptr nonnull @__swift_async_resume_get_context, ptr nonnull @coroutineA.1, ptr %i31, i64 0, i64 0, ptr %i29), !dbg !54
%i34 = extractvalue { ptr } %i33, 0, !dbg !54
%i35 = call ptr @__swift_async_resume_get_context(ptr %i34), !dbg !54
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %i3, i1 false, ptr nonnull @coroutineA.0.1, ptr undef, ptr undef), !dbg !54
+ %i45 = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %i3, i1 false, ptr nonnull @coroutineA.0.1, ptr undef, ptr undef), !dbg !54
unreachable, !dbg !54
; CHECK-NOT: define
; CHECK-LABEL: define {{.*}} @coroutineATY2_(
@@ -116,7 +116,7 @@ define swifttailcc void @coroutineB(ptr swiftasync %arg) !dbg !37 {
%i3 = call ptr @llvm.coro.begin(token %i2, ptr null)
%i6 = getelementptr inbounds <{ ptr, ptr }>, ptr %arg, i64 0, i32 1, !dbg !42
%i712 = load ptr, ptr %i6, align 8, !dbg !42
- call void (ptr, i1, ...) @llvm.coro.end.async(ptr %i3, i1 false, ptr nonnull @coroutineB.0, ptr %i712, ptr %arg), !dbg !42
+ %i10 = call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %i3, i1 false, ptr nonnull @coroutineB.0, ptr %i712, ptr %arg), !dbg !42
unreachable, !dbg !42
}
define hidden swifttailcc void @coroutineB.0(ptr %arg, ptr %arg1) !dbg !44 {
@@ -124,7 +124,7 @@ define hidden swifttailcc void @coroutineB.0(ptr %arg, ptr %arg1) !dbg !44 {
ret void, !dbg !47
}
-declare void @llvm.coro.end.async(ptr, i1, ...)
+declare i1 @llvm.coro.end.async(ptr, i1, ...)
declare ptr @llvm.coro.async.resume()
declare ptr @llvm.coro.begin(token, ptr writeonly)
declare ptr @llvm.swift.async.context.addr()
diff --git a/llvm/test/Transforms/FunctionAttrs/noreturn.ll b/llvm/test/Transforms/FunctionAttrs/noreturn.ll
index ae2ccb02733f3..fa80f6c2eced4 100644
--- a/llvm/test/Transforms/FunctionAttrs/noreturn.ll
+++ b/llvm/test/Transforms/FunctionAttrs/noreturn.ll
@@ -81,9 +81,9 @@ define void @unreachable() {
; CHECK: @coro
define void @coro() presplitcoroutine {
call token @llvm.coro.id.retcon.once(i32 0, i32 0, ptr null, ptr @coro, ptr null, ptr null)
- call void (ptr, i1, ...) @llvm.coro.end(ptr null, i1 false)
+ call i1 (ptr, i1, ...) @llvm.coro.end(ptr null, i1 false)
unreachable
}
declare token @llvm.coro.id.retcon.once(i32 %size, i32 %align, ptr %buffer, ptr %prototype, ptr %alloc, ptr %free)
-declare void @llvm.coro.end(ptr, i1, ...)
+declare i1 @llvm.coro.end(ptr, i1, ...)
diff --git a/llvm/test/Transforms/LICM/sink-with-coroutine.ll b/llvm/test/Transforms/LICM/sink-with-coroutine.ll
index 33ec28e40c0f3..2013df11d9c44 100644
--- a/llvm/test/Transforms/LICM/sink-with-coroutine.ll
+++ b/llvm/test/Transforms/LICM/sink-with-coroutine.ll
@@ -22,7 +22,7 @@ define i64 @licm(i64 %n) #0 {
; CHECK-NEXT: [[T6:%.*]] = icmp ult i64 [[T5]], [[N]]
; CHECK-NEXT: br i1 [[T6]], label [[LOOP]], label [[BB2]]
; CHECK: bb2:
-; CHECK-NEXT: call void @llvm.coro.end(ptr null, i1 false, token none)
+; CHECK-NEXT: [[RES:%.*]] = call i1 @llvm.coro.end(ptr null, i1 false, token none)
; CHECK-NEXT: ret i64 0
;
entry:
@@ -46,7 +46,7 @@ await.ready:
br i1 %t6, label %loop, label %bb2
bb2:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ %res = call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret i64 0
}
@@ -82,7 +82,7 @@ define i64 @hoist_threadlocal() presplitcoroutine {
; CHECK: loop.end:
; CHECK-NEXT: br i1 [[CMP]], label [[EXIT]], label [[FOR_BODY]]
; CHECK: exit:
-; CHECK-NEXT: call void @llvm.coro.end(ptr null, i1 false, token none)
+; CHECK-NEXT: [[RES:%.*]] = call i1 @llvm.coro.end(ptr null, i1 false, token none)
; CHECK-NEXT: ret i64 0
;
entry:
@@ -119,11 +119,12 @@ loop.end:
br i1 %cmp, label %exit, label %for.body
exit:
- call void @llvm.coro.end(ptr null, i1 false, token none)
+ %res = call i1 @llvm.coro.end(ptr null, i1 false, token none)
ret i64 0
}
declare i8 @llvm.coro.suspend(token, i1)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare nonnull ptr @readonly_funcs() readonly
declare nonnull ptr @llvm.threadlocal.address(ptr nonnull) nounwind readnone willreturn
declare void @not.reachable()
diff --git a/llvm/unittests/Transforms/Coroutines/ExtraRematTest.cpp b/llvm/unittests/Transforms/Coroutines/ExtraRematTest.cpp
index f477a118b4c8b..68bf640334b5f 100644
--- a/llvm/unittests/Transforms/Coroutines/ExtraRematTest.cpp
+++ b/llvm/unittests/Transforms/Coroutines/ExtraRematTest.cpp
@@ -97,7 +97,7 @@ StringRef Text = R"(
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0)
ret ptr %hdl
}
@@ -110,7 +110,7 @@ StringRef Text = R"(
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.end(ptr, i1)
+ declare i1 @llvm.coro.end(ptr, i1)
declare i32 @should.remat(i32)
@@ -212,7 +212,7 @@ StringRef TextCoroBeginCustomABI = R"(
call void @free(ptr %mem)
br label %suspend
suspend:
- call void @llvm.coro.end(ptr %hdl, i1 0)
+ call i1 @llvm.coro.end(ptr %hdl, i1 0)
ret ptr %hdl
}
@@ -225,7 +225,7 @@ StringRef TextCoroBeginCustomABI = R"(
declare token @llvm.coro.id(i32, ptr, ptr, ptr)
declare i1 @llvm.coro.alloc(token)
declare ptr @llvm.coro.begin.custom.abi(token, ptr, i32)
- declare void @llvm.coro.end(ptr, i1)
+ declare i1 @llvm.coro.end(ptr, i1)
declare i32 @should.remat(i32)
diff --git a/mlir/test/Target/LLVMIR/Import/intrinsic.ll b/mlir/test/Target/LLVMIR/Import/intrinsic.ll
index 20561adf978d1..07d22120153fe 100644
--- a/mlir/test/Target/LLVMIR/Import/intrinsic.ll
+++ b/mlir/test/Target/LLVMIR/Import/intrinsic.ll
@@ -830,7 +830,7 @@ define void @coro_suspend(i32 %0, i1 %1, ptr %2) {
; CHECK-LABEL: llvm.func @coro_end
define void @coro_end(ptr %0, i1 %1) {
; CHECK: llvm.intr.coro.end
- call void @llvm.coro.end(ptr %0, i1 %1, token none)
+ call i1 @llvm.coro.end(ptr %0, i1 %1, token none)
ret void
}
@@ -1297,7 +1297,7 @@ declare i64 @llvm.coro.align.i64()
declare i32 @llvm.coro.align.i32()
declare token @llvm.coro.save(ptr)
declare i8 @llvm.coro.suspend(token, i1)
-declare void @llvm.coro.end(ptr, i1, token)
+declare i1 @llvm.coro.end(ptr, i1, token)
declare ptr @llvm.coro.free(token, ptr nocapture readonly)
declare void @llvm.coro.resume(ptr)
declare ptr @llvm.coro.promise(ptr nocapture, i32, i1)
diff --git a/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir b/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir
index 7de6ce908b209..c99dde36f5ccb 100644
--- a/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir
+++ b/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir
@@ -839,8 +839,8 @@ llvm.func @coro_suspend(%arg0: i32, %arg1 : i1, %arg2 : !llvm.ptr) {
// CHECK-LABEL: @coro_end
llvm.func @coro_end(%arg0: !llvm.ptr, %arg1 : i1) {
%none = llvm.mlir.none : !llvm.token
- // CHECK: call void @llvm.coro.end
- llvm.intr.coro.end %arg0, %arg1, %none : (!llvm.ptr, i1, !llvm.token) -> !llvm.void
+ // CHECK: call i1 @llvm.coro.end
+ %0 = llvm.intr.coro.end %arg0, %arg1, %none : (!llvm.ptr, i1, !llvm.token) -> i1
llvm.return
}
@@ -1367,7 +1367,7 @@ llvm.func @experimental_constrained_fpext(%s: f32, %v: vector<4xf32>) {
// CHECK-DAG: declare i32 @llvm.coro.size.i32()
// CHECK-DAG: declare token @llvm.coro.save(ptr)
// CHECK-DAG: declare i8 @llvm.coro.suspend(token, i1)
-// CHECK-DAG: declare void @llvm.coro.end(ptr, i1, token)
+// CHECK-DAG: declare i1 @llvm.coro.end(ptr, i1, token)
// CHECK-DAG: declare ptr @llvm.coro.free(token, ptr readonly captures(none))
// CHECK-DAG: declare void @llvm.coro.resume(ptr)
// CHECK-DAG: declare ptr @llvm.coro.promise(ptr captures(none), i32, i1)
More information about the llvm-commits
mailing list