[Bug c++/78635] [6/7 Regression] internal compiler error: in output_constructor_regular_field, at varasm.c:4989
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Dec 5 20:44:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78635
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Nathan Sidwell from comment #8)
> The fix for both bugs is the same -- reject creation of arrays of trailing
> array elements. We used to reject initializers for such arrays, then we
> silently accepted them (generating wrong code), now we ICE. It seems
> perverse to think going from 'silent wrong code' to 'ICE' to be a regression.
>
> I suspect we could easily generate wrong code even without an initializer,
> as the array layout would overlay a previous element's trailing array with a
> subsequent element. That's bound to confuse optimizers.
I thought that such constructs are widely used though, I believe e.g. glibc
used arrays of structs with flexible array members in several places. Maybe it
has changed, I've lost track. So, before changing anything like that we'd need
to make sure e.g. glibc still builds.
More information about the Gcc-bugs
mailing list