https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95087

--- Comment #2 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:1bb808504643e6c3c0df0fdd68a941ed2a64c7f0

commit r11-758-g1bb808504643e6c3c0df0fdd68a941ed2a64c7f0
Author: Iain Sandoe <i...@sandoe.co.uk>
Date:   Sun May 31 20:30:10 2020 +0100

    coroutines: Avoid functions with unlowered coroutine trees [PR95087].

    Diagnosing bad uses of 'return' in coroutines is somewhat
    tricky, since the user can use the keyword before we know
    that the function is a coroutine (where such returns are not
    permitted).  At present, we are just doing a check for any
    use of 'return' and erroring on that.  However, we can't then
    pass the function body on, since it will contain unlowered
    coroutine trees.

    This avoids the issue by dropping the entire function body
    under that circumstance.  We could do better (for 11) but
    this is intended to allow back-port of other fixes to 10.

    gcc/cp/ChangeLog:

            PR c++/95087
            * coroutines.cc (morph_fn_to_coro): If we see an
            early fatal error, drop the erroneous function body.

    gcc/testsuite/ChangeLog:

            PR c++/95087
            * g++.dg/coroutines/co-return-syntax-08-bad-return.C:
            Adjust the testcase to do the compile (rather than an
            -fsyntax-only parse).

Reply via email to