c++: Fix crash in gimplifier with paren init of aggregates [PR94155]
authorMarek Polacek <polacek@redhat.com>
Mon, 30 Mar 2020 19:49:17 +0000 (15:49 -0400)
committerMarek Polacek <polacek@redhat.com>
Mon, 6 Apr 2020 15:23:56 +0000 (11:23 -0400)
commitf84aded848f6fdd2704c9376263c6d1aee6bb0ca
tree48038a008f3bf8051fa0b16da3f45b297e56c527
parentc72a1b6f8b26de37d1a922a8af143af009747498
c++: Fix crash in gimplifier with paren init of aggregates [PR94155]

Here we crash in the gimplifier because gimplify_init_ctor_eval doesn't
expect null indexes for a constructor:

      /* ??? Here's to hoping the front end fills in all of the indices,
         so we don't have to figure out what's missing ourselves.  */
      gcc_assert (purpose);

The indexes weren't filled because we never called reshape_init: for
a constructor that represents parenthesized initialization of an
aggregate we don't allow brace elision or designated initializers.

PR c++/94155 - crash in gimplifier with paren init of aggregates.
* init.c (build_vec_init): Fill in indexes.

* g++.dg/cpp2a/paren-init22.C: New test.
gcc/cp/ChangeLog
gcc/cp/init.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp2a/paren-init22.C [new file with mode: 0644]