]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
class.c (finish_struct_1): Replace redundant code with assertions.
authorMark Mitchell <mark@codesourcery.com>
Mon, 17 Jan 2000 05:12:39 +0000 (05:12 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Mon, 17 Jan 2000 05:12:39 +0000 (05:12 +0000)
* class.c (finish_struct_1): Replace redundant code with
assertions.

From-SVN: r31454

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

index f8f2bdf285d78f14f542c25d65b57cf0e80e3abc..ae00eaf7a2402806c4fd7acd7da0f29c27e04d69 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 8c1073e64bf4fa6dd0fb1fdc158a6e28a878d3cf..9b14ded42420a466c7ba27cc74d032c52ac62617 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.  */