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

--- Comment #2 from CVS 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:dec8d0e5fa00ceb2ded78b8a3eba8976d860a90e

commit r12-6897-gdec8d0e5fa00ceb2ded78b8a3eba8976d860a90e
Author: Patrick Palka <ppa...@redhat.com>
Date:   Thu Jan 27 10:56:49 2022 -0500

    c++: non-dependent immediate member fn call [PR99895]

    Here we're emitting a bogus error during ahead of time evaluation of a
    non-dependent immediate member function call such as a.f(args) because
    the defacto templated form for such a call is (a.f)(args) but we're
    trying to evaluate it using the intermediate CALL_EXPR built by
    build_over_call, which has the non-member form f(a, args).  The defacto
    member form is built in build_new_method_call, so it seems we should
    handle the immediate call there instead, or perhaps make build_over_call
    build the correct form in the first place.

    Giiven that there are many spots other than build_new_method_call that
    call build_over_call for member functions, e.g. build_op_call, this
    patch takes the latter approach.

    In passing, this patch makes us avoid wrapping PARM_DECL in
    NON_DEPENDENT_EXPR for benefit of the third testcase below.

            PR c++/99895

    gcc/cp/ChangeLog:

            * call.cc (build_over_call): For a non-dependent member call,
            build up a CALL_EXPR using a COMPONENT_REF callee, as in
            build_new_method_call.
            * pt.cc (build_non_dependent_expr): Don't wrap PARM_DECL either.
            * tree.cc (build_min_non_dep_op_overload): Adjust accordingly
            after the build_over_call change.

    gcc/ChangeLog:

            * tree.cc (build_call_vec): Add const to second parameter.
            * tree.h (build_call_vec): Likewise.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/consteval-memfn1.C: New test.
            * g++.dg/cpp2a/consteval-memfn2.C: New test.
            * g++.dg/cpp2a/consteval28.C: New test.
  • [Bug c++/99895] Function parame... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to