* c-typeck.c (really_start_incremental_init): Discriminate between zero-length arrays and flexible arrays. (push_init_level): Detect zero-length arrays and handle them like fixed-sized arrays. * expr.c (store_constructor): Handle zero-length arrays and flexible arrays correctly. * doc/extend.texi: Update zero-length array notes. * gcc.dg/20000926-1.c: Update expected warning messages. * gcc.dg/array-2.c: Likewise, and test for warnings too. * gcc.dg/array-4.c: Likewise, and don't verify the zero-length array. From-SVN: r45714
14 lines
496 B
C
14 lines
496 B
C
/* { dg-do compile } */
|
|
/* { dg-options "" } */
|
|
|
|
/* Verify that we can't do things to get ourselves in trouble
|
|
with GCC's initialized flexible array member extension. */
|
|
|
|
struct f { int w; int x[]; };
|
|
struct g { struct f f; };
|
|
struct g g1 = { { 0, { } } };
|
|
struct g g2 = { { 0, { 1 } } }; /* { dg-error "(nested context)|(near initialization)" "nested" } */
|
|
|
|
struct h { int x[0]; int y; };
|
|
struct h h1 = { { 0 }, 1 }; /* { dg-error "(excess elements)|(near initialization)" "before end" } */
|