[Bug c++/120285] [14/15/16 Regression] ice in digest_init_r, at cp/typeck2.cc:1397
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Mar 11 16:42:10 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120285
--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:
https://gcc.gnu.org/g:2581e76a4a00023f81353b01ff9f7f3967205cf7
commit r16-8012-g2581e76a4a00023f81353b01ff9f7f3967205cf7
Author: Marek Polacek <polacek@redhat.com>
Date: Mon Mar 9 11:40:54 2026 -0400
c++: ICE with structured bindings and arrays [PR120285]
In r15-3933 I started using a CONSTRUCTOR to signal direct-init
to build_vec_init rather than a TREE_LIST. That broke
struct S {
int a = 1;
};
void foo() {
S arr[2];
auto [x, y](arr);
}
because we pass that new CONSTRUCTOR not to build_vec_init but to
build_aggr_init which then crashes in digest_init_r because the
new CONSTRUCTOR wasn't reshaped. It should work to reshape it if
its type is CP_AGGREGATE_TYPE_P but it might be safer to resort
back to building up a list if we're not going to go to build_vec_init.
PR c++/120285
gcc/cp/ChangeLog:
* init.cc (build_vec_init): Only build up a CONSTRUCTOR for
arrays, otherwise use a TREE_LIST like prior to r15-3933.
gcc/testsuite/ChangeLog:
* g++.dg/cpp1z/decomp68.C: New test.
Reviewed-by: Jason Merrill <jason@redhat.com>
More information about the Gcc-bugs
mailing list