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

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Jason Merrill
<ja...@gcc.gnu.org>:

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

commit r11-8449-g0a1010428b3861464eb319c629c68cb13b9ca01e
Author: Jason Merrill <ja...@redhat.com>
Date:   Wed May 19 21:12:45 2021 -0400

    c++: designated init with anonymous union [PR100489]

    My patch for PR98463 added an assert that tripped on this testcase, because
    we ended up with a U CONSTRUCTOR with an initializer for a, which is not a
    member of U.  We need to wrap the a initializer in another CONSTRUCTOR for
    the anonymous union.

    There was already support for this in process_init_constructor_record, but
    not in process_init_constructor_union.  But since this is about brace
    elision, it really belongs under reshape_init rather than digest_init, so
    this patch moves the handling to reshape_init_class, which also handles
    unions.

            PR c++/100489

    gcc/cp/ChangeLog:

            * decl.c (reshape_init_class): Handle designator for
            member of anonymous aggregate here.
            * typeck2.c (process_init_constructor_record): Not here.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/desig18.C: New test.

Reply via email to