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.
Martin