On Mon, Mar 20, 2017 at 7:58 PM, Martin Sebor <mse...@gmail.com> wrote: > On 03/20/2017 05:51 PM, Jason Merrill wrote: >> On Mon, Mar 20, 2017 at 7:04 PM, Martin Sebor <mse...@gmail.com> wrote: >>> >>> Attached is a minimal patch to avoid an ICE in CHKP upon >>> encountering one form of an initializer for a flexible array >>> member, specifically the empty string: >>> >>> int f () >>> { >>> struct B { int n; char a[]; }; >>> >>> return ((struct B){ 1, "" }).a[0]; >>> } >>> >>> Although GCC accepts (and doesn't ICE on) non-empty initializers >>> for flexible array members, such as >>> >>> (struct B){ 1, "123" } >> >> >> How do you mean? When I compile this with the C front end, I get >> >> error: non-static initialization of a flexible array member > > I meant that G++ accepts it, doesn't ICE, but emits wrong code. > (it's consistently rejected by the C front end). Sorry for not > being clear about it.
Ah, OK. It seems to me that the wrong code bug is worth addressing; why does rejecting the code seem risky to you? Jason