tree.h (BINFO_BASE_ACCESSES): Accesses are a VEC(tree).
authorNathan Sidwell <nathan@gcc.gnu.org>
Mon, 26 Jul 2004 08:23:58 +0000 (08:23 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Mon, 26 Jul 2004 08:23:58 +0000 (08:23 +0000)
.: * tree.h (BINFO_BASE_ACCESSES): Accesses are a VEC(tree).
(BINFO_BASE_ACCESS): Adjust.
(BINFO_BASE_ACCESS_APPEND): New.
(struct tree_binfo): Make base_accesses a VEC(tree) pointer.
* dbxout.c (dbxout_type): Adjust binfo access accessing.
* dwarf2out.c (gen_member_die): Likewise.
* tree-dump.c (deque_and_dump): Likewise.
cp:
* decl.c (xref_basetypes): Adjust base access vector creation.
* rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base
access accesses.
* search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise.

From-SVN: r85187

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/rtti.c
gcc/cp/search.c
gcc/dbxout.c
gcc/dwarf2out.c
gcc/tree-dump.c
gcc/tree.h

index 42806e793b49c2dcb87560a870f0961490141378..4e455a3a0c95e0c753932e6b1683c5e929db77e7 100644 (file)
@@ -1,4 +1,14 @@
-2004-07-26  Falk Hueffner  <falk@debian.org>>
+2004-07-24  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * tree.h (BINFO_BASE_ACCESSES): Accesses are a VEC(tree).
+       (BINFO_BASE_ACCESS): Adjust.
+       (BINFO_BASE_ACCESS_APPEND): New.
+       (struct tree_binfo): Make base_accesses a VEC(tree) pointer.
+       * dbxout.c (dbxout_type): Adjust binfo access accessing.
+       * dwarf2out.c (gen_member_die): Likewise.
+       * tree-dump.c (deque_and_dump): Likewise.
+
+2004-07-26  Falk Hueffner  <falk@debian.org>
 
        * config/alpha/alpha.c (alpha_rtx_cost_data): Tweak int_div
        costs.
 
 2004-07-23  Mike Stump  <mrs@apple.com>
 
-       * c-typeck.c (convert_for_assignment): Tightened up pointer converstions
-       that differ in signedness.
+       * c-typeck.c (convert_for_assignment): Tightened up pointer
+       converstions that differ in signedness.
 
 2004-07-23  Zack Weinberg  <zack@codesourcery.com>
 
index e6e1a2482fdae0d472ed6ebaf4a30c9a3000422b..1fb00277f9aae19eb1d1e9282ae682dfa045f170 100644 (file)
@@ -1,3 +1,10 @@
+2004-07-26  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (xref_basetypes): Adjust base access vector creation.
+       * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base
+       access accesses.
+       * search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise.
+
 2004-07-26  Niall Douglas  <s_fsfeurope2@nedprod.com>
            Brian Ryner  <bryner@brianryner.com>
 
index 2a9e61fdd390877c341af47906697b9232c232e1..f901d98f3dbe097ec011fd7f2fd3dc96c5454975 100644 (file)
@@ -9109,7 +9109,7 @@ xref_basetypes (tree ref, tree base_list)
 
   if (max_bases)
     {
-      BINFO_BASE_ACCESSES (binfo) = make_tree_vec (max_bases);
+      BINFO_BASE_ACCESSES (binfo) = VEC_alloc (tree, max_bases);
       /* An aggregate cannot have baseclasses.  */
       CLASSTYPE_NON_AGGREGATE (ref) = 1;
 
@@ -9199,17 +9199,10 @@ xref_basetypes (tree ref, tree base_list)
       if (!BINFO_INHERITANCE_CHAIN (base_binfo))
        BINFO_INHERITANCE_CHAIN (base_binfo) = binfo;
 
-      TREE_VEC_ELT (BINFO_BASE_ACCESSES (binfo),
-                   BINFO_N_BASE_BINFOS (binfo)) = access;
       BINFO_BASE_APPEND (binfo, base_binfo);
+      BINFO_BASE_ACCESS_APPEND (binfo, access);
     }
 
-  if (max_bases)
-    /* If any bases were invalid, we will have allocated too many
-       slots.  */
-    TREE_VEC_LENGTH (BINFO_BASE_ACCESSES (binfo))
-      = BINFO_N_BASE_BINFOS (binfo);
-
   /* Unmark all the types.  */
   for (i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
     CLEAR_CLASSTYPE_MARKED (BINFO_TYPE (base_binfo));
index 7332a9a69140c92f28767d7f0940a00095e96446..c6c9fc6acc44af98354acbcc99c2b5ba83e5f428 100644 (file)
@@ -1052,7 +1052,7 @@ get_pseudo_ti_init (tree type, tree var_desc, bool *non_public_p)
          int hint = class_hint_flags (type);
          tree binfo = TYPE_BINFO (type);
           int nbases = BINFO_N_BASE_BINFOS (binfo);
-         tree base_accesses = BINFO_BASE_ACCESSES (binfo);
+         VEC (tree) *base_accesses = BINFO_BASE_ACCESSES (binfo);
           tree base_inits = NULL_TREE;
           int ix;
           
@@ -1065,7 +1065,7 @@ get_pseudo_ti_init (tree type, tree var_desc, bool *non_public_p)
               tree tinfo;
               tree offset;
               
-              if (TREE_VEC_ELT (base_accesses, ix) == access_public_node)
+              if (VEC_index (tree, base_accesses, ix) == access_public_node)
                 flags |= 2;
               tinfo = get_tinfo_ptr (BINFO_TYPE (base_binfo));
              if (BINFO_VIRTUAL_P (base_binfo))
@@ -1199,12 +1199,12 @@ get_pseudo_ti_desc (tree type)
       else
        {
          tree binfo = TYPE_BINFO (type);
-         tree base_accesses = BINFO_BASE_ACCESSES (binfo);
+         VEC (tree) *base_accesses = BINFO_BASE_ACCESSES (binfo);
          tree base_binfo = BINFO_BASE_BINFO (binfo, 0);
          int num_bases = BINFO_N_BASE_BINFOS (binfo);
          
          if (num_bases == 1
-             && TREE_VEC_ELT (base_accesses, 0) == access_public_node
+             && VEC_index (tree, base_accesses, 0) == access_public_node
              && !BINFO_VIRTUAL_P (base_binfo)
              && integer_zerop (BINFO_OFFSET (base_binfo)))
            /* single non-virtual public.  */
index 7841d1e5cecb81213a7a13030e76375c28a5e641..a1270acdbfa208f60f2cae770f4bff0bd815a021 100644 (file)
@@ -287,7 +287,7 @@ static int
 dynamic_cast_base_recurse (tree subtype, tree binfo, bool is_via_virtual,
                           tree *offset_ptr)
 {
-  tree accesses;
+  VEC (tree) *accesses;
   tree base_binfo;
   int i;
   int worst = -2;
@@ -306,7 +306,7 @@ dynamic_cast_base_recurse (tree subtype, tree binfo, bool is_via_virtual,
   accesses = BINFO_BASE_ACCESSES (binfo);
   for (i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
     {
-      tree base_access = TREE_VEC_ELT (accesses, i);
+      tree base_access = VEC_index (tree, accesses, i);
       int rval;
       
       if (base_access != access_public_node)
@@ -625,14 +625,15 @@ dfs_access_in_type (tree binfo, void *data)
       if (!access)
        {
          int i;
-         tree base_binfo, accesses;
+         tree base_binfo;
+         VEC (tree) *accesses;
          
          /* Otherwise, scan our baseclasses, and pick the most favorable
             access.  */
          accesses = BINFO_BASE_ACCESSES (binfo);
          for (i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
            {
-             tree base_access = TREE_VEC_ELT (accesses, i);
+             tree base_access = VEC_index (tree, accesses, i);
              access_kind base_access_now = BINFO_ACCESS (base_binfo);
 
              if (base_access_now == ak_none || base_access_now == ak_private)
index 6a98b326f3a59b69bdc6e00b1ba1e41803bfb5a4..6630702e9d59bd0f9a3e72df4b5a07faebbdc2a6 100644 (file)
@@ -1684,6 +1684,7 @@ dbxout_type (tree type, int full)
          {
            int i;
            tree child;
+           VEC (tree) *accesses = BINFO_BASE_ACCESSES (binfo);
            
            if (use_gnu_debug_info_extensions)
              {
@@ -1696,8 +1697,7 @@ dbxout_type (tree type, int full)
              }
            for (i = 0; BINFO_BASE_ITERATE (binfo, i, child); i++)
              {
-               tree access = (BINFO_BASE_ACCESSES (binfo)
-                              ? BINFO_BASE_ACCESS (binfo, i)
+               tree access = (accesses ? VEC_index (tree, accesses, i)
                               : access_public_node);
 
                if (use_gnu_debug_info_extensions)
index 64fa5c96fc76282c479bb1d2d66248cc6316fea8..4a1037fdf72cf7970fa052d67ff895a15e5e57f9 100644 (file)
@@ -11897,13 +11897,13 @@ gen_member_die (tree type, dw_die_ref context_die)
   /* First output info about the base classes.  */
   if (binfo)
     {
-      tree accesses = BINFO_BASE_ACCESSES (binfo);
+      VEC (tree) *accesses = BINFO_BASE_ACCESSES (binfo);
       int i;
       tree base;
 
       for (i = 0; BINFO_BASE_ITERATE (binfo, i, base); i++)
        gen_inheritance_die (base,
-                            (accesses ? TREE_VEC_ELT (accesses, i)
+                            (accesses ? VEC_index (tree, accesses, i)
                              : access_public_node), context_die);
     }
 
index d17a8f827beda2107fc9c7ad0213e3a5ce7601eb..c42e33f32f782faa34fe0d7423b67d401b027365 100644 (file)
@@ -252,7 +252,7 @@ dequeue_and_dump (dump_info_p di)
     {
       unsigned ix;
       tree base;
-      tree accesses = BINFO_BASE_ACCESSES (t);
+      VEC (tree) *accesses = BINFO_BASE_ACCESSES (t);
 
       dump_child ("type", BINFO_TYPE (t));
 
@@ -262,7 +262,7 @@ dequeue_and_dump (dump_info_p di)
       dump_int (di, "bases", BINFO_N_BASE_BINFOS (t));
       for (ix = 0; BINFO_BASE_ITERATE (t, ix, base); ix++)
        {
-         tree access = (accesses ? TREE_VEC_ELT (accesses, ix)
+         tree access = (accesses ? VEC_index (tree, accesses, ix)
                         : access_public_node);
          const char *string = NULL;
 
index c20944ac04e81bcaa233c923c3bd1de5362307ee..3ee61882deb9c07dc09adf3d813517343e903174 100644 (file)
@@ -1671,7 +1671,11 @@ struct tree_type GTY(())
    access_public_node, access_protected_node or access_private_node.
    If this array is not present, public access is implied.  */
 #define BINFO_BASE_ACCESSES(NODE) (TREE_BINFO_CHECK(NODE)->binfo.base_accesses)
-#define BINFO_BASE_ACCESS(NODE,N) TREE_VEC_ELT (BINFO_BASE_ACCESSES(NODE), (N))
+
+#define BINFO_BASE_ACCESS(NODE,N) \
+  VEC_index (tree, BINFO_BASE_ACCESSES (NODE), (N))
+#define BINFO_BASE_ACCESS_APPEND(NODE,T) \
+  VEC_quick_push (tree, BINFO_BASE_ACCESSES (NODE), (T))
 
 /* The index in the VTT where this subobject's sub-VTT can be found.
    NULL_TREE if there is no sub-VTT.  */
@@ -1701,7 +1705,7 @@ struct tree_binfo GTY (())
   tree vtable;
   tree virtuals;
   tree vptr_field;
-  tree base_accesses;
+  VEC(tree) *base_accesses;
   tree inheritance;
 
   tree vtt_subvtt;