diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8479c7b404d..67623e138b4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-02-19 Richard Henderson + + * 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 * except.c (start_dynamic_handler) : Use TYPE_MODE (integer_type_node) diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 7a5941ec628..6ce22c50ae0 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -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;