https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92812
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>: https://gcc.gnu.org/g:a1c9c9ff06ab15e697d5bac6ea6e5da2df840cf5 commit r10-6436-ga1c9c9ff06ab15e697d5bac6ea6e5da2df840cf5 Author: Jason Merrill <ja...@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.