decl2.c (pending_statics, [...]): Use VEC instead of VARRAY.
authorKazu Hirata <kazu@cs.umass.edu>
Fri, 6 May 2005 19:03:35 +0000 (19:03 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Fri, 6 May 2005 19:03:35 +0000 (19:03 +0000)
* decl2.c (pending_statics, note_vague_linkage_var,
cp_finish_file): Use VEC instead of VARRAY.
(pending_statics_used): Remove.

From-SVN: r99329

gcc/cp/ChangeLog
gcc/cp/decl2.c

index 35e9560..afb3073 100644 (file)
@@ -5,6 +5,10 @@
        * decl2.c (ssdf_decls, start_static_storage_duration_function,
        generate_ctor_or_dtor_function): Use VEC instead of VARRAY.
 
+       * decl2.c (pending_statics, note_vague_linkage_var,
+       cp_finish_file): Use VEC instead of VARRAY.
+       (pending_statics_used): Remove.
+
 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
 
        * decl2.c (deferred_fns, note_vague_linkage_fn,
index 50a1ac7..e11338f 100644 (file)
@@ -86,9 +86,7 @@ static tree get_guard_bits (tree);
 /* A list of static class variables.  This is needed, because a
    static class variable can be declared inside the class without
    an initializer, and then initialized, statically, outside the class.  */
-static GTY(()) varray_type pending_statics;
-#define pending_statics_used \
-  (pending_statics ? pending_statics->elements_used : 0)
+static GTY(()) VEC(tree,gc) *pending_statics;
 
 /* A list of functions which were declared inline, but which we
    may need to emit outline anyway.  */
@@ -735,9 +733,7 @@ note_vague_linkage_fn (tree decl)
 static void
 note_vague_linkage_var (tree var)
 {
-  if (!pending_statics)
-    VARRAY_TREE_INIT (pending_statics, 32, "pending_statics");
-  VARRAY_PUSH_TREE (pending_statics, var);
+  VEC_safe_push (tree, gc, pending_statics, var);
 }
 
 /* We have just processed the DECL, which is a static data member.
@@ -2779,6 +2775,7 @@ cp_finish_file (void)
   do 
     {
       tree t;
+      tree decl;
 
       reconsider = false;
 
@@ -2965,9 +2962,8 @@ cp_finish_file (void)
        reconsider = true;
 
       /* Static data members are just like namespace-scope globals.  */
-      for (i = 0; i < pending_statics_used; ++i) 
+      for (i = 0; VEC_iterate (tree, pending_statics, i, decl); ++i) 
        {
-         tree decl = VARRAY_TREE (pending_statics, i);
          if (var_finalized_p (decl) || DECL_REALLY_EXTERN (decl))
            continue;
          import_export_decl (decl);
@@ -2976,9 +2972,9 @@ cp_finish_file (void)
          if (DECL_NOT_REALLY_EXTERN (decl) && decl_needed_p (decl))
            DECL_EXTERNAL (decl) = 0;
        }
-      if (pending_statics
-         && wrapup_global_declarations (&VARRAY_TREE (pending_statics, 0),
-                                        pending_statics_used))
+      if (VEC_length (tree, pending_statics) != 0
+         && wrapup_global_declarations (VEC_address (tree, pending_statics),
+                                        VEC_length (tree, pending_statics)))
        reconsider = true;
 
       retries++;
@@ -3049,9 +3045,9 @@ cp_finish_file (void)
   /* Now, issue warnings about static, but not defined, functions,
      etc., and emit debugging information.  */
   walk_namespaces (wrapup_globals_for_namespace, /*data=*/&reconsider);
-  if (pending_statics)
-    check_global_declarations (&VARRAY_TREE (pending_statics, 0),
-                              pending_statics_used);
+  if (VEC_length (tree, pending_statics) != 0)
+    check_global_declarations (VEC_address (tree, pending_statics),
+                              VEC_length (tree, pending_statics));
 
   finish_repo ();