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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:43e84ce7d62be121445e17cc0ee009a81fb285d7

commit r11-5755-g43e84ce7d62be121445e17cc0ee009a81fb285d7
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Sat Dec 5 01:30:08 2020 +0100

    c++: Fix constexpr access to union member through pointer-to-member
[PR98122]

    We currently incorrectly reject the first testcase, because
    cxx_fold_indirect_ref_1 doesn't attempt to handle UNION_TYPEs.
    As the second testcase shows, it isn't that easy, because I believe we need
    to take into account the active member and prefer that active member over
    other members, because if we pick a non-active one, we might reject valid
    programs.

    2020-12-05  Jakub Jelinek  <ja...@redhat.com>

            PR c++/98122
            * constexpr.c (cxx_union_active_member): New function.
            (cxx_fold_indirect_ref_1): Add ctx argument, pass it through to
            recursive call.  Handle UNION_TYPE.
            (cxx_fold_indirect_ref): Add ctx argument, pass it to recursive
calls
            and cxx_fold_indirect_ref_1.
            (cxx_eval_indirect_ref): Adjust cxx_fold_indirect_ref calls.

            * g++.dg/cpp1y/constexpr-98122.C: New test.
            * g++.dg/cpp2a/constexpr-98122.C: New test.

Reply via email to