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.

Reply via email to