This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] tree-*.[ch]: VECify referenced vars. (Take 2)
- From: Kazu Hirata <kazu at cs dot umass dot edu>
- To: gcc-patches at gcc dot gnu dot org
- Cc: nathan at codesourcery dot com, dnovillo at redhat dot com
- Date: Sun, 08 May 2005 11:06:21 -0400 (EDT)
- Subject: [patch] tree-*.[ch]: VECify referenced vars. (Take 2)
Hi,
Attached is a patch to VECify referenced_vars.
I made this patch as small as possible and avoided changes like
- for (i = 0; i < num_referenced_vars; i++)
+ for (i = 0; VEC_iterate (tree, referenced_vars, i, q); i++)
{
- q = referenced_var (i);
because
o These changes are not strictly necessary to move away from VARRAY.
o They clutter the patch.
o If I use VEC_iterate, which does not use num_referenced_vars, there
are other places that use num_referenced_vars, so the resulting code
is inconsistent.
o If we want to remove num_referenced and replace all of its uses with
VEC_length, we can always do so later.
Tested on i686-pc-linux-gnu. Committed.
Kazu Hirata
2005-05-08 Kazu Hirata <kazu@cs.umass.edu>
* tree-dfa.c (referenced_vars, add_referenced_var): Use VEC
instead of VARRAY.
* tree-flow.h (num_referenced_var, referenced_var): Likewise.
* tree-into-ssa.c (mark_def_site_blocks): Likewise.
* tree-ssa.c (init_tree_ssa, delete_tree_ssa): Likewise.
* tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
Index: tree-dfa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-dfa.c,v
retrieving revision 2.53
diff -u -d -p -r2.53 tree-dfa.c
--- tree-dfa.c 3 May 2005 12:19:37 -0000 2.53
+++ tree-dfa.c 8 May 2005 05:12:23 -0000
@@ -84,7 +84,7 @@ static void add_referenced_var (tree, st
/* Global declarations. */
/* Array of all variables referenced in the function. */
-varray_type referenced_vars;
+VEC(tree,gc) *referenced_vars;
/*---------------------------------------------------------------------------
@@ -558,7 +558,7 @@ add_referenced_var (tree var, struct wal
if (slot)
*slot = (void *) var;
v_ann->uid = num_referenced_vars;
- VARRAY_PUSH_TREE (referenced_vars, var);
+ VEC_safe_push (tree, gc, referenced_vars, var);
/* Global variables are always call-clobbered. */
if (is_global_var (var))
Index: tree-flow.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-flow.h,v
retrieving revision 2.102
diff -u -d -p -r2.102 tree-flow.h
--- tree-flow.h 6 May 2005 21:11:29 -0000 2.102
+++ tree-flow.h 8 May 2005 05:12:23 -0000
@@ -406,10 +406,10 @@ static inline void set_phi_nodes (basic_
Global declarations
---------------------------------------------------------------------------*/
/* Array of all variables referenced in the function. */
-extern GTY(()) varray_type referenced_vars;
+extern GTY(()) VEC(tree,gc) *referenced_vars;
-#define num_referenced_vars VARRAY_ACTIVE_SIZE (referenced_vars)
-#define referenced_var(i) VARRAY_TREE (referenced_vars, i)
+#define num_referenced_vars VEC_length (tree, referenced_vars)
+#define referenced_var(i) VEC_index (tree, referenced_vars, i)
/* Array of all SSA_NAMEs used in the function. */
extern GTY(()) VEC(tree,gc) *ssa_names;
Index: tree-into-ssa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-into-ssa.c,v
retrieving revision 2.53
diff -u -d -p -r2.53 tree-into-ssa.c
--- tree-into-ssa.c 3 May 2005 12:19:39 -0000 2.53
+++ tree-into-ssa.c 8 May 2005 05:12:23 -0000
@@ -1668,7 +1668,7 @@ mark_def_site_blocks (sbitmap interestin
struct mark_def_sites_global_data mark_def_sites_global_data;
/* Allocate memory for the DEF_BLOCKS hash table. */
- def_blocks = htab_create (VARRAY_ACTIVE_SIZE (referenced_vars),
+ def_blocks = htab_create (VEC_length (tree, referenced_vars),
def_blocks_hash, def_blocks_eq, def_blocks_free);
for (i = 0; i < num_referenced_vars; i++)
Index: tree-ssa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa.c,v
retrieving revision 2.93
diff -u -d -p -r2.93 tree-ssa.c
--- tree-ssa.c 3 May 2005 12:19:48 -0000 2.93
+++ tree-ssa.c 8 May 2005 05:12:25 -0000
@@ -786,7 +786,7 @@ err:
void
init_tree_ssa (void)
{
- VARRAY_TREE_INIT (referenced_vars, 20, "referenced_vars");
+ referenced_vars = VEC_alloc (tree, gc, 20);
call_clobbered_vars = BITMAP_ALLOC (NULL);
addressable_vars = BITMAP_ALLOC (NULL);
init_ssanames ();
@@ -827,16 +827,13 @@ delete_tree_ssa (void)
}
/* Remove annotations from every referenced variable. */
- if (referenced_vars)
+ for (i = 0; i < num_referenced_vars; i++)
{
- for (i = 0; i < num_referenced_vars; i++)
- {
- tree var = referenced_var (i);
- ggc_free (var->common.ann);
- var->common.ann = NULL;
- }
- referenced_vars = NULL;
+ tree var = referenced_var (i);
+ ggc_free (var->common.ann);
+ var->common.ann = NULL;
}
+ VEC_free (tree, gc, referenced_vars);
fini_ssanames ();
fini_phinodes ();
Index: tree-tailcall.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-tailcall.c,v
retrieving revision 2.41
diff -u -d -p -r2.41 tree-tailcall.c
--- tree-tailcall.c 3 May 2005 12:19:50 -0000 2.41
+++ tree-tailcall.c 8 May 2005 05:12:25 -0000
@@ -139,9 +139,9 @@ suitable_for_tail_opt_p (void)
/* No local variable nor structure field should be call-clobbered. We
ignore any kind of memory tag, as these are not real variables. */
- for (i = 0; i < (int) VARRAY_ACTIVE_SIZE (referenced_vars); i++)
+ for (i = 0; i < (int) num_referenced_vars; i++)
{
- tree var = VARRAY_TREE (referenced_vars, i);
+ tree var = VEC_index (tree, referenced_vars, i);
if (!(TREE_STATIC (var) || DECL_EXTERNAL (var))
&& (var_ann (var)->mem_tag_kind == NOT_A_TAG