https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94883
--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Iain D Sandoe <ia...@gcc.gnu.org>: https://gcc.gnu.org/g:aa94a22f5cb337e173d7119ffd5a92f1e607f544 commit r10-8074-gaa94a22f5cb337e173d7119ffd5a92f1e607f544 Author: Iain Sandoe <i...@sandoe.co.uk> Date: Wed Apr 29 19:46:35 2020 +0100 coroutines: Fix handling of target cleanup exprs [PR94883] The problem here is that target cleanup expressions have been added to the initialisers for the awaitable (and returns of non-trivial values from await_suspend() calls. This is because the expansion of the co_await into its control flow is not apparent to the machinery adding the target cleanup expressions. The solution being tested is simply to recreate target expressions as the co_awaits are lowered. Teaching the machinery to handle walking co_await expressions in different ways at different points (outside the coroutine transformation) seems overly complex. gcc/cp/ChangeLog: 2020-04-30 Iain Sandoe <i...@sandoe.co.uk> PR c++/94883 * coroutines.cc (register_awaits): Update target expressions for awaitable and suspend handle initializers. gcc/testsuite/ChangeLog: 2020-04-30 Iain Sandoe <i...@sandoe.co.uk> PR c++/94883 * g++.dg/coroutines/pr94883-folly-2.C: New test.