diff options
author | Richard Henderson <rth@cygnus.com> | 2000-02-20 00:30:30 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-02-20 00:30:30 -0800 |
commit | 83b091c77aa68744ddc7a6ec17f8641ff36dea0f (patch) | |
tree | 55cc1417e9084086bbc4e2e20891fec270626a06 | |
parent | 4a6cfa6347b32e6e522f28dfed841101afda2dd0 (diff) | |
download | gcc-83b091c77aa68744ddc7a6ec17f8641ff36dea0f.zip gcc-83b091c77aa68744ddc7a6ec17f8641ff36dea0f.tar.gz gcc-83b091c77aa68744ddc7a6ec17f8641ff36dea0f.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-typeck.c | 7 |
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8479c7b..67623e1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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) diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 7a5941e..6ce22c5 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; |