Ping.

Thanks,
bin

On Mon, Feb 3, 2020 at 1:55 PM bin.cheng <bin.ch...@linux.alibaba.com> wrote:
>
> Hi,
>
> Exception in coroutine is not correctly handled because the default
> return_void call is now inserted before the finish suspend point,
> rather than at the end of the original coroutine body.  This patch
> fixes the issue by generating following code:
>   co_await promise.initial_suspend();
>   try {
>     // The original coroutine body
>
>     promise.return_void(); // The default return_void call.
>   } catch (...) {
>     promise.unhandled_exception();
>   }
>   final_suspend:
>   // ...
>
> Bootstrap and test on x86_64.  Is it OK?
>
> Thanks,
> bin
>
> gcc/cp
> 2020-02-03  Bin Cheng  <bin.ch...@linux.alibaba.com>
>
>         * coroutines.cc (build_actor_fn): Factor out code inserting the
>         default return_void call to...
>         (morph_fn_to_coro): ...here, also hoist local var declarations.
>
> gcc/testsuite
> 2020-02-03  Bin Cheng  <bin.ch...@linux.alibaba.com>
>
>         * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: New.

Reply via email to