diff options
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/tree-ssa-alias.c | 19 | ||||
-rw-r--r-- | gcc/tree-ssa-structalias.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-structalias.h | 2 |
4 files changed, 20 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index da9ac04..747c3b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2006-04-12 Kazu Hirata <kazu@codesourcery.com> + + * tree-ssa-alias.c (set_initial_properties, init_alias_info, + delete_alias_info, compute_flow_sensitive_aliasing, + group_aliases): Use VEC instead of VARRAY. + * tree-ssa-structalias.c (update_alias_info): Likewise. + * tree-ssa-structalias.h (alias_info): Change the type of + processed_ptrs to VEC(tree,heap) *. + 2006-04-12 J"orn Rennecke <joern.rennecke@st.com> PR target/27060 diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index cc652e7..4e8b5a4 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -314,6 +314,7 @@ set_initial_properties (struct alias_info *ai) unsigned int i; referenced_var_iterator rvi; tree var; + tree ptr; FOR_EACH_REFERENCED_VAR (var, rvi) { @@ -334,9 +335,8 @@ set_initial_properties (struct alias_info *ai) } } - for (i = 0; i < VARRAY_ACTIVE_SIZE (ai->processed_ptrs); i++) + for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++) { - tree ptr = VARRAY_TREE (ai->processed_ptrs, i); struct ptr_info_def *pi = SSA_NAME_PTR_INFO (ptr); var_ann_t v_ann = var_ann (SSA_NAME_VAR (ptr)); @@ -859,7 +859,7 @@ init_alias_info (void) ai = XCNEW (struct alias_info); ai->ssa_names_visited = sbitmap_alloc (num_ssa_names); sbitmap_zero (ai->ssa_names_visited); - VARRAY_TREE_INIT (ai->processed_ptrs, 50, "processed_ptrs"); + ai->processed_ptrs = VEC_alloc (tree, heap, 50); ai->written_vars = BITMAP_ALLOC (&alias_obstack); ai->dereferenced_ptrs_store = BITMAP_ALLOC (&alias_obstack); ai->dereferenced_ptrs_load = BITMAP_ALLOC (&alias_obstack); @@ -943,7 +943,7 @@ delete_alias_info (struct alias_info *ai) tree var; sbitmap_free (ai->ssa_names_visited); - ai->processed_ptrs = NULL; + VEC_free (tree, heap, ai->processed_ptrs); for (i = 0; i < ai->num_addressable_vars; i++) free (ai->addressable_vars[i]); @@ -1085,20 +1085,19 @@ static void compute_flow_sensitive_aliasing (struct alias_info *ai) { size_t i; + tree ptr; - for (i = 0; i < VARRAY_ACTIVE_SIZE (ai->processed_ptrs); i++) + for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++) { - tree ptr = VARRAY_TREE (ai->processed_ptrs, i); if (!find_what_p_points_to (ptr)) set_pt_anything (ptr); } create_name_tags (); - for (i = 0; i < VARRAY_ACTIVE_SIZE (ai->processed_ptrs); i++) + for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++) { unsigned j; - tree ptr = VARRAY_TREE (ai->processed_ptrs, i); struct ptr_info_def *pi = SSA_NAME_PTR_INFO (ptr); var_ann_t v_ann = var_ann (SSA_NAME_VAR (ptr)); bitmap_iterator bi; @@ -1411,6 +1410,7 @@ static void group_aliases (struct alias_info *ai) { size_t i; + tree ptr; /* Sort the POINTERS array in descending order of contributed virtual operands. */ @@ -1478,10 +1478,9 @@ group_aliases (struct alias_info *ai) into p_5->field, but that is wrong because there have been modifications to 'SMT.20' in between. To prevent this we have to replace 'a' with 'SMT.20' in the name tag of p_5. */ - for (i = 0; i < VARRAY_ACTIVE_SIZE (ai->processed_ptrs); i++) + for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++) { size_t j; - tree ptr = VARRAY_TREE (ai->processed_ptrs, i); tree name_tag = SSA_NAME_PTR_INFO (ptr)->name_mem_tag; VEC(tree,gc) *aliases; tree alias; diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 990398c..7a00de4 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -3041,7 +3041,7 @@ update_alias_info (tree stmt, struct alias_info *ai) if (!TEST_BIT (ai->ssa_names_visited, SSA_NAME_VERSION (op))) { SET_BIT (ai->ssa_names_visited, SSA_NAME_VERSION (op)); - VARRAY_PUSH_TREE (ai->processed_ptrs, op); + VEC_safe_push (tree, heap, ai->processed_ptrs, op); } /* If STMT is a PHI node, then it will not have pointer diff --git a/gcc/tree-ssa-structalias.h b/gcc/tree-ssa-structalias.h index bc129dd..008c015 100644 --- a/gcc/tree-ssa-structalias.h +++ b/gcc/tree-ssa-structalias.h @@ -34,7 +34,7 @@ struct alias_info sbitmap ssa_names_visited; /* Array of SSA_NAME pointers processed by the points-to collector. */ - varray_type processed_ptrs; + VEC(tree,heap) *processed_ptrs; /* ADDRESSABLE_VARS contains all the global variables and locals that have had their address taken. */ |