From cf0cb588f5fce79441a3bfd2c1b02710056ac053 Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Wed, 12 Apr 2000 16:04:25 +0000 Subject: [PATCH] c-typeck.c (add_pending_init): Don't abort for multiple fields at the same offset. 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. From-SVN: r33112 --- gcc/ChangeLog | 5 +++++ gcc/c-typeck.c | 7 +++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index afddd094e8c4..e11a0f55809c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ Wed Apr 12 00:42:19 2000 Jeffrey A Law (law@cygnus.com) + 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. + Wed Apr 12 00:44:31 2000 Jeffrey A Law (law@cygnus.com) * config/i386/freebsd-elf.h (DEFAULT_VTABLE_THUNKS): Changed to 2. diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 154d830a6d01..d320307574b5 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -5846,7 +5846,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 (); @@ -5860,8 +5860,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 (); @@ -6046,7 +6045,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; -- 2.47.3