[Bug c++/86917] [8/9/10 Regression] ICE in verify_ctor_sanity, at cp/constexpr.c:2798

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Feb 4 19:50:00 GMT 2020


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

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <jason@gcc.gnu.org>:

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

commit r10-6436-ga1c9c9ff06ab15e697d5bac6ea6e5da2df840cf5
Author: Jason Merrill <jason@redhat.com>
Date:   Tue Feb 4 14:21:59 2020 -0500

    c++: Fix ({ ... }) array mem-initializer.

    Here, we were going down the wrong path in perform_member_init because of
    the incorrect parens around the mem-initializer for the array.  And then
    cxx_eval_vec_init_1 didn't know what to do with a CONSTRUCTOR as the
    initializer.  The latter issue was a straightforward fix, but I also wanted
    to fix us silently accepting the parens, which led to factoring out
handling
    of TREE_LIST and flexarrays.  The latter led to adjusting the expected
    behavior on flexary29.C: we should complain about the initializer, but not
    complain about a missing initializer.

    As I commented on PR 92812, in this process I noticed that we weren't
    handling C++20 parenthesized aggregate initialization as a mem-initializer.
    So my TREE_LIST handling includes a commented out section that should
    probably be part of a future fix for that issue; with it uncommented we
    continue to crash on the testcase in C++20 mode, but should instead
complain
    about the braced-init-list not being a valid initializer for an A.

        PR c++/86917
        * init.c (perform_member_init): Simplify.
        * constexpr.c (cx_check_missing_mem_inits): Allow uninitialized
        flexarray.
        (cxx_eval_vec_init_1): Handle CONSTRUCTOR.


More information about the Gcc-bugs mailing list