[Bug c++/110114] [13/14 Regression] ICE on calling overloaded function in case of incomplete argument type and C++ designated initializers
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jul 20 14:33:25 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110114
--- Comment #5 from CVS 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:2cb0dc866e8f95151df5d759157708108e850dd9
commit r14-2677-g2cb0dc866e8f95151df5d759157708108e850dd9
Author: Marek Polacek <polacek@redhat.com>
Date: Wed Jul 19 08:47:29 2023 -0400
c++: fix ICE with designated initializer [PR110114]
r13-1227 added an assert checking that the index in a CONSTRUCTOR
is a FIELD_DECL. That's a reasonable assumption but in this case
we never called reshape_init due to the type being incomplete, and
so the index remained an identifier node: get_class_binding never
got around to looking up the FIELD_DECL.
We can avoid the crash by returning early in implicit_conversion_1; we'd
return NULL anyway due to:
if (i < CONSTRUCTOR_NELTS (ctor))
return NULL;
in build_aggr_conv.
PR c++/110114
gcc/cp/ChangeLog:
* call.cc (implicit_conversion_1): Return early if the type isn't
complete.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/initlist100.C: Adjust expected diagnostic.
* g++.dg/cpp2a/desig28.C: New test.
* g++.dg/cpp2a/desig29.C: New test.
More information about the Gcc-bugs
mailing list