Hi Bin,

Bin.Cheng <amker.ch...@gmail.com> wrote:

> Ping.

We are seeking to clarify the standard wording around this (and the cases where
unhandled_exception() returns - hopefully during the WG21 meeting this week,

FWIW, I think your interpretation makes sense here.

thanks
Iain

> 
> 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