llvm-project/clang/test/CodeGenCoroutines
Gor Nishanov 0f33300609 [coroutines] Support coroutine-handle returning await-suspend (i.e symmetric control transfer)
Summary:
If await_suspend returns a coroutine_handle, as in the example below:
```
  coroutine_handle<> await_suspend(coroutine_handle<> h) {
    coro.promise().waiter = h;
    return coro;
  }
```
suspensionExpression processing will resume the coroutine pointed at by that handle.
Related LLVM change rL311751 makes resume calls of this kind `musttail` at any optimization level.

This enables unlimited symmetric control transfer from coroutine to coroutine without blowing up the stack.

Reviewers: GorNishanov

Reviewed By: GorNishanov

Subscribers: rsmith, EricWF, cfe-commits

Differential Revision: https://reviews.llvm.org/D37131

llvm-svn: 311762
2017-08-25 04:46:54 +00:00
..
Inputs [coroutines] [NFC] Add tests for return_void, unhandled_exception and promise dtor 2017-05-24 14:19:48 +00:00
coro-alloc.cpp [coroutines] Add support for deallocation elision 2017-05-23 04:21:27 +00:00
coro-await-domination.cpp CGCleanup: (NFC) add another test for r304335 - Don't try to spill static allocas 2017-06-01 01:15:25 +00:00
coro-await.cpp [coroutines] Support coroutine-handle returning await-suspend (i.e symmetric control transfer) 2017-08-25 04:46:54 +00:00
coro-builtins-err.c [coroutines] Adding builtins for coroutine intrinsics and backendutil support. 2016-10-03 22:44:48 +00:00
coro-builtins.c [coroutines] Replace all coro.frame builtins with an SSA value of coro.begin 2017-05-23 03:46:59 +00:00
coro-cleanup.cpp [coroutines] Add emission of initial and final suspends 2017-05-23 05:04:01 +00:00
coro-eh-cleanup.cpp [coroutines] Fix coro-eh-cleanup.cpp test 2017-05-22 22:41:28 +00:00
coro-gro.cpp [coroutines] Implement correct GRO lifetime 2017-05-24 02:38:26 +00:00
coro-lambda.cpp [coroutines] Make generic lambda coroutines work 2017-05-24 15:44:57 +00:00
coro-params.cpp [coroutines] Fix rebuilding of dependent coroutine parameters 2017-06-03 00:22:18 +00:00
coro-promise-dtor.cpp [coroutines] [NFC] Add tests for return_void, unhandled_exception and promise dtor 2017-05-24 14:19:48 +00:00
coro-ret-void.cpp [coroutines] Evaluate the operand of void `co_return` expressions. 2017-07-31 07:48:13 +00:00
coro-return.cpp [coroutines] Add cleanup for compiler injected objects/allocations in coroutine body 2017-04-01 00:22:47 +00:00
coro-unhandled-exception.cpp [coroutines] [NFC] Add tests for return_void, unhandled_exception and promise dtor 2017-05-24 14:19:48 +00:00
microsoft-abi-operator-coawait.cpp