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

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick Palka <ppa...@gcc.gnu.org>:

https://gcc.gnu.org/g:fced59166f95e9922a72392955e4fed095afd47e

commit r14-6724-gfced59166f95e9922a72392955e4fed095afd47e
Author: Patrick Palka <ppa...@redhat.com>
Date:   Tue Dec 19 16:33:55 2023 -0500

    c++: local class memfn synth from uneval context [PR113063]

    Here we first use and therefore synthesize the local class operator<=>
    from an unevaluated context, which inadvertently affects synthesization
    by preventing functions used within the definition (such as the copy
    constructor of std::strong_ordering) from getting marked as odr-used.

    This patch fixes this by using maybe_push_to_top_level in synthesize_method
    which ensures cp_unevaluated_operand gets cleared even in the
function-local
    case.

            PR c++/113063

    gcc/cp/ChangeLog:

            * method.cc (synthesize_method): Use maybe_push_to_top_level
            and maybe_pop_from_top_level.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/spaceship-synth16.C: New test.

Reply via email to