aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2005-05-06 19:03:35 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2005-05-06 19:03:35 +0000
commit2b41c040165ff3e5fe42a491f17b9e8a5475afff (patch)
tree66663ecc0e0fc97957a95983ce9cc5fe14b27652
parent2b04082193a548edcf6c67ec1028e88d1dccfda8 (diff)
downloadgcc-2b41c040165ff3e5fe42a491f17b9e8a5475afff.zip
gcc-2b41c040165ff3e5fe42a491f17b9e8a5475afff.tar.gz
gcc-2b41c040165ff3e5fe42a491f17b9e8a5475afff.tar.bz2
decl2.c (pending_statics, [...]): 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. From-SVN: r99329
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/decl2.c24
2 files changed, 14 insertions, 14 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 35e9560..afb3073 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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,
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 50a1ac7..e11338f 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -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 ();