re PR c/8032 (GCC >= 3.0 incorrectly initializes static structs in the presence of flexible arrays)
PR c/8032 * c-typeck.c (process_init_element) [RECORD_TYPE]: For an empty element, do not advance the pointer to unfilled fields if there are pending initializers. From-SVN: r61092
This commit is contained in:
parent
eb27f449b6
commit
bbb818c65a
|
@ -1,3 +1,10 @@
|
|||
2003-01-09 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR c/8032
|
||||
* c-typeck.c (process_init_element) [RECORD_TYPE]: For
|
||||
an empty element, do not advance the pointer to unfilled
|
||||
fields if there are pending initializers.
|
||||
|
||||
2003-01-09 Christian Cornelssen <ccorn@cs.tu-berlin.de>
|
||||
|
||||
* Makefile.in (ORDINARY_FLAGS_TO_PASS): Also pass DESTDIR.
|
||||
|
|
|
@ -6609,13 +6609,18 @@ process_init_element (value)
|
|||
bit_position (constructor_fields),
|
||||
DECL_SIZE (constructor_fields));
|
||||
|
||||
constructor_unfilled_fields = TREE_CHAIN (constructor_fields);
|
||||
/* Skip any nameless bit fields. */
|
||||
while (constructor_unfilled_fields != 0
|
||||
&& DECL_C_BIT_FIELD (constructor_unfilled_fields)
|
||||
&& DECL_NAME (constructor_unfilled_fields) == 0)
|
||||
constructor_unfilled_fields =
|
||||
TREE_CHAIN (constructor_unfilled_fields);
|
||||
/* If the current field was the first one not yet written out,
|
||||
it isn't now, so update. */
|
||||
if (constructor_unfilled_fields == constructor_fields)
|
||||
{
|
||||
constructor_unfilled_fields = TREE_CHAIN (constructor_fields);
|
||||
/* Skip any nameless bit fields. */
|
||||
while (constructor_unfilled_fields != 0
|
||||
&& DECL_C_BIT_FIELD (constructor_unfilled_fields)
|
||||
&& DECL_NAME (constructor_unfilled_fields) == 0)
|
||||
constructor_unfilled_fields =
|
||||
TREE_CHAIN (constructor_unfilled_fields);
|
||||
}
|
||||
}
|
||||
|
||||
constructor_fields = TREE_CHAIN (constructor_fields);
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2003-01-09 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* gcc.c-torture/execute/20030109-1.c: New test.
|
||||
|
||||
2003-01-08 Larin Hennessey <larin@science.oregonstate.edu>
|
||||
|
||||
* g++.old-deja/g++.mike/dyncast1.C: Remove reference to AMD A29K
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
/* PR c/8032 */
|
||||
/* Verify that an empty initializer inside a partial
|
||||
parent initializer doesn't confuse GCC. */
|
||||
|
||||
struct X
|
||||
{
|
||||
int a;
|
||||
int b;
|
||||
int z[];
|
||||
};
|
||||
|
||||
struct X x = { .b = 40, .z = {} };
|
||||
|
||||
int main ()
|
||||
{
|
||||
if (x.b != 40)
|
||||
abort ();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue