* class.c (finish_struct_1): Replace redundant code with
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Jan 2000 05:12:39 +0000 (05:12 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Jan 2000 05:12:39 +0000 (05:12 +0000)
assertions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31454 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/class.c

index f8f2bdf..ae00eaf 100644 (file)
@@ -1,5 +1,8 @@
 2000-01-16  Mark Mitchell  <mark@codesourcery.com>
 
+       * class.c (finish_struct_1): Replace redundant code with
+       assertions.
+
        * cp-tree.h (flag_new_abi): Move.
        (flag_use_cxa_atexit): Likewise.
        (flag_honor_std): Likewise.
index 8c1073e..9b14ded 100644 (file)
@@ -4906,18 +4906,18 @@ finish_struct_1 (t)
 
   if (TYPE_CONTAINS_VPTR_P (t))
     {
+      if (TYPE_BINFO_VTABLE (t))
+       my_friendly_assert (DECL_VIRTUAL_P (TYPE_BINFO_VTABLE (t)),
+                           20000116);
+      if (!CLASSTYPE_HAS_PRIMARY_BASE_P (t))
+       my_friendly_assert (TYPE_BINFO_VIRTUALS (t) == NULL_TREE,
+                           20000116);
+
       CLASSTYPE_VSIZE (t) = has_virtual;
-      if (CLASSTYPE_HAS_PRIMARY_BASE_P (t))
-       {
-         if (pending_virtuals)
-           TYPE_BINFO_VIRTUALS (t) = chainon (TYPE_BINFO_VIRTUALS (t),
-                                               pending_virtuals);
-       }
-      else if (has_virtual)
-       {
-         TYPE_BINFO_VIRTUALS (t) = pending_virtuals;
-         DECL_VIRTUAL_P (TYPE_BINFO_VTABLE (t)) = 1;
-       }
+      /* Entries for virtual functions defined in the primary base are
+        followed by entries for new functions unique to this class.  */
+      TYPE_BINFO_VIRTUALS (t) 
+       = chainon (TYPE_BINFO_VIRTUALS (t), pending_virtuals);
     }
 
   /* Now lay out the virtual function table.  */