c-typeck.c (add_pending_init): Don't abort for multiple fields at the same offset.

* c-typeck.c (add_pending_init): Don't abort for multiple
        fields at the same offset.
        (pending_init_member): Test the correct member.

From-SVN: r32076
This commit is contained in:
Richard Henderson 2000-02-20 00:30:30 -08:00 committed by Richard Henderson
parent 4a6cfa6347
commit 83b091c77a
2 changed files with 9 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2000-02-19 Richard Henderson <rth@cygnus.com>
* c-typeck.c (add_pending_init): Don't abort for multiple
fields at the same offset.
(pending_init_member): Test the correct member.
2000-02-19 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* except.c (start_dynamic_handler) : Use TYPE_MODE (integer_type_node)

View File

@ -5580,7 +5580,7 @@ add_pending_init (purpose, value)
p = *q;
if (tree_int_cst_lt (purpose, p->purpose))
q = &p->left;
else if (tree_int_cst_lt (p->purpose, purpose))
else if (p->purpose != purpose)
q = &p->right;
else
abort ();
@ -5594,8 +5594,7 @@ add_pending_init (purpose, value)
if (tree_int_cst_lt (DECL_FIELD_BITPOS (purpose),
DECL_FIELD_BITPOS (p->purpose)))
q = &p->left;
else if (tree_int_cst_lt (DECL_FIELD_BITPOS (p->purpose),
DECL_FIELD_BITPOS (purpose)))
else if (p->purpose != purpose)
q = &p->right;
else
abort ();
@ -5780,7 +5779,7 @@ pending_init_member (field)
{
while (p)
{
if (tree_int_cst_equal (field, p->purpose))
if (field == p->purpose)
return 1;
else if (tree_int_cst_lt (field, p->purpose))
p = p->left;