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

--- Comment #6 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Author: ppalka
Date: Tue Dec 15 03:33:53 2015
New Revision: 231640

URL: https://gcc.gnu.org/viewcvs?rev=231640&root=gcc&view=rev
Log:
Fix PR c++/21802 (two-stage name lookup fails for operators)

gcc/cp/ChangeLog:

        PR c++/21802
        PR c++/53223
        * cp-tree.h (cp_tree_code_length): Declare.
        (build_min_non_dep_op_overload): Declare.
        * tree.c (cp_tree_code_length): Define.
        (build_min_non_dep_op_overload): Define.
        (build_win_non_dep_call_vec): Copy the KOENIG_LOOKUP_P flag.
        * typeck.c (build_x_indirect_ref): Use
        build_min_non_dep_op_overload when the given expression
        has been resolved to an operator overload.
        (build_x_binary_op): Likewise.
        (build_x_array_ref): Likewise.
        (build_x_unary_op): Likewise.
        (build_x_compound_expr): Likewise.
        (build_x_modify_expr): Likewise.
        * decl2.c (grok_array_decl): Likewise.
        * call.c (build_new_op_1): If during template processing we
        chose an operator overload that is a hidden friend function, set
        the call's KOENIG_LOOKUP_P flag to 1.

gcc/testsuite/ChangeLog:

        PR c++/21802
        PR c++/53223
        * g++.dg/cpp0x/pr53223.C: New test.
        * g++.dg/lookup/pr21802.C: New test.
        * g++.dg/lookup/two-stage4.C: Remove XFAIL.


Added:
    trunk/gcc/testsuite/g++.dg/cpp0x/pr53223.C
    trunk/gcc/testsuite/g++.dg/lookup/pr21802.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/call.c
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/decl2.c
    trunk/gcc/cp/tree.c
    trunk/gcc/cp/typeck.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/lookup/two-stage4.C

Reply via email to