]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c-typeck.c (add_pending_init): Don't abort for multiple fields at the same offset.
authorJeffrey A Law <law@cygnus.com>
Wed, 12 Apr 2000 16:04:25 +0000 (16:04 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 12 Apr 2000 16:04:25 +0000 (10:04 -0600)
        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.

From-SVN: r33112

gcc/ChangeLog
gcc/c-typeck.c

index afddd094e8c4dcbe9aa1c45dfdd696e932e6b705..e11a0f55809c5738c1e2250214b4184ed0d160d7 100644 (file)
@@ -1,5 +1,10 @@
 Wed Apr 12 00:42:19 2000  Jeffrey A Law  (law@cygnus.com)
 
+       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.
+
        Wed Apr 12 00:44:31 2000  Jeffrey A Law  (law@cygnus.com)
        * config/i386/freebsd-elf.h (DEFAULT_VTABLE_THUNKS): Changed to 2.
 
index 154d830a6d012cf45c764b6eaaa13a0cb95ebccf..d320307574b55ea952890c1a2cd494144ee7d266 100644 (file)
@@ -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;