X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftree-ssa-alias.c;h=4e8b5a4374ad1bb478967d98cf9c6117f0752529;hb=a39ac8645754aaee468aa8add01b601723955ca0;hp=a151c8c3f418e50ce2bdf4799c6bf2f24f745e21;hpb=185ba02d5bbf41d027a9518987484b841e99de82;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index a151c8c3f41..4e8b5a4374a 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -46,6 +46,7 @@ Boston, MA 02110-1301, USA. */ #include "ipa-type-escape.h" #include "vec.h" #include "bitmap.h" +#include "vecprim.h" /* Obstack used to hold grouping bitmaps and other temporary bitmaps used by aliasing */ @@ -135,9 +136,6 @@ bitmap addressable_vars; having to keep track of too many V_MAY_DEF expressions at call sites. */ tree global_var; -DEF_VEC_I(int); -DEF_VEC_ALLOC_I(int,heap); - /* qsort comparison function to sort type/name tags by DECL_UID. */ static int @@ -316,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) { @@ -336,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)); @@ -861,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); @@ -945,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]); @@ -1087,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; @@ -1413,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. */ @@ -1480,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;