class.c (build_base_field): Make sure we get the canonical base when descending throu...
authorMark Mitchell <mark@codesourcery.com>
Wed, 27 Nov 2002 20:44:16 +0000 (20:44 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 27 Nov 2002 20:44:16 +0000 (20:44 +0000)
* class.c (build_base_field): Make sure we get the canonical base
when descending through primary bases.

From-SVN: r59582

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

index 42ae0dd..677a6bb 100644 (file)
@@ -1,3 +1,8 @@
+2002-11-27  Mark Mitchell  <mark@codesourcery.com>
+
+       * class.c (build_base_field): Make sure we get the canonical base
+       when descending through primary bases.
+
 2002-11-26  Geoffrey Keating  <geoffk@apple.com>
 
        * decl.c (check_initializer): Don't error on initialisation of
index fdd9c47..0d93334 100644 (file)
@@ -3863,7 +3863,10 @@ build_base_field (record_layout_info rli, tree binfo,
          tree b;
 
          b = get_primary_binfo (binfo);
-         if (!b || BINFO_PRIMARY_BASE_OF (b) != binfo)
+         if (!b)
+           break;
+         b = CANONICAL_BINFO (b, rli->t);
+         if (BINFO_PRIMARY_BASE_OF (b) != binfo)
            break;
          if (TREE_VIA_VIRTUAL (b))
            record_subobject_offsets (BINFO_TYPE (b),