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.