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

--- Comment #25 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Jason Merrill <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:0d2a5f3cb715fd95f1fa4a13b5d67c7eea28f178

commit r15-7481-g0d2a5f3cb715fd95f1fa4a13b5d67c7eea28f178
Author: Jason Merrill <ja...@redhat.com>
Date:   Mon Feb 10 15:44:13 2025 +0100

    c++: change implementation of -frange-for-ext-temps [PR118574]

    The implementation in r15-3840 used a novel technique of wrapping the
entire
    range-for loop in a CLEANUP_POINT_EXPR, which confused the coroutines
    transformation.  Instead let's use the existing extend_ref_init_temps
    mechanism.

    This does not revert all of r15-3840, only the parts that change how
    CLEANUP_POINT_EXPRs are applied to range-for declarations.

            PR c++/118574
            PR c++/107637

    gcc/cp/ChangeLog:

            * call.cc (struct extend_temps_data): New.
            (extend_temps_r, extend_all_temps): New.
            (set_up_extended_ref_temp): Handle tree walk case.
            (extend_ref_init_temps): Cal extend_all_temps.
            * decl.cc (initialize_local_var): Revert ext-temps change.
            * parser.cc (cp_convert_range_for): Likewise.
            (cp_parser_omp_loop_nest): Likewise.
            * pt.cc (tsubst_stmt): Likewise.
            * semantics.cc (finish_for_stmt): Likewise.

    gcc/testsuite/ChangeLog:

            * g++.dg/coroutines/range-for1.C: New test.

Reply via email to