tree 872c8fea991bba0af898c77640f88d9d4f3a74b5
parent 078089a084f4fd20812b15cd1ec7bd4bcd5c9282
author Marek Polacek <polacek@redhat.com> 1725569132 -0400
committer Marek Polacek <polacek@redhat.com> 1736451994 -0500

c++: ICE with structured bindings and m-d array [PR102594]

We ICE in decay_conversion with this test:

  struct S {
    S() {}
  };
  S arr[1][1];
  auto [m](arr3);

But not when the last line is:

  auto [n] = arr3;

Therefore the difference is between copy- and direct-init.  In
particular, in build_vec_init we have:

  if (direct_init)
    from = build_tree_list (NULL_TREE, from);

and then we call build_vec_init again with init==from.  Then
decay_conversion gets the TREE_LIST and it crashes.

build_aggr_init has:

              /* Wrap the initializer in a CONSTRUCTOR so that build_vec_init
                 recognizes it as direct-initialization.  */
              init = build_constructor_single (init_list_type_node,
                                               NULL_TREE, init);
              CONSTRUCTOR_IS_DIRECT_INIT (init) = true;

so I propose to do the same in build_vec_init.

	PR c++/102594

gcc/cp/ChangeLog:

	* init.cc (build_vec_init): Build up a CONSTRUCTOR to signal
	direct-initialization rather than a TREE_LIST.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp1z/decomp61.C: New test.

Reviewed-by: Jason Merrill <jason@redhat.com>
(cherry picked from commit 96e0370f4daef29b918aafcff68c7f5e4ef397fd)
