[patch] alias.c: Use VEC instaed of VARRAY. (Part 2)

Kazu Hirata kazu@codesourcery.com
Sun Apr 16 12:38:00 GMT 2006


Hi,

Attached is a patch to use VEC instead of VARRAY.

I've simplified new_alias_set a little bit.  We maintain
"VEC_length (...) - 1 == last_alias_set", so last_alias_set is now
redundant.

Tested on x86_64-pc-linux-gnu.  Will commit this patch in 24 hours or
so as preapproved.

Kazu Hirata

2006-04-16  Kazu Hirata  <kazu@codesourcery.com>

	* alias.c (alias_sets): Change the type to
	VEC(alias_set_entry,gc) *.
	(get_alias_set_entry, new_alias_set, record_alias_subset): Use
	VEC instead of VARRAY.
	(last_alias_set): Remove.

Index: alias.c
===================================================================
--- alias.c	(revision 112970)
+++ alias.c	(working copy)
@@ -248,8 +248,11 @@ static bool *reg_known_equiv_p;
    NOTE_INSN_FUNCTION_BEG note.  */
 static bool copying_arguments;
 
+DEF_VEC_P(alias_set_entry);
+DEF_VEC_ALLOC_P(alias_set_entry,gc);
+
 /* The splay-tree used to store the various alias set entries.  */
-static GTY ((param_is (struct alias_set_entry))) varray_type alias_sets;
+static GTY (()) VEC(alias_set_entry,gc) *alias_sets;
 
 /* Returns a pointer to the alias set entry for ALIAS_SET, if there is
    such an entry, or NULL otherwise.  */
@@ -257,7 +260,7 @@ static GTY ((param_is (struct alias_set_
 static inline alias_set_entry
 get_alias_set_entry (HOST_WIDE_INT alias_set)
 {
-  return (alias_set_entry)VARRAY_GENERIC_PTR (alias_sets, alias_set);
+  return VEC_index (alias_set_entry, alias_sets, alias_set);
 }
 
 /* Returns nonzero if the alias sets for MEM1 and MEM2 are such that
@@ -622,18 +625,15 @@ get_alias_set (tree t)
 
 /* Return a brand-new alias set.  */
 
-static GTY(()) HOST_WIDE_INT last_alias_set;
-
 HOST_WIDE_INT
 new_alias_set (void)
 {
   if (flag_strict_aliasing)
     {
-      if (!alias_sets)
-	VARRAY_GENERIC_PTR_INIT (alias_sets, 10, "alias sets");
-      else
-	VARRAY_GROW (alias_sets, last_alias_set + 2);
-      return ++last_alias_set;
+      if (alias_sets == 0)
+	VEC_safe_push (alias_set_entry, gc, alias_sets, 0);
+      VEC_safe_push (alias_set_entry, gc, alias_sets, 0);
+      return VEC_length (alias_set_entry, alias_sets) - 1;
     }
   else
     return 0;
@@ -675,7 +675,7 @@ record_alias_subset (HOST_WIDE_INT super
       superset_entry->children
 	= splay_tree_new_ggc (splay_tree_compare_ints);
       superset_entry->has_zero_child = 0;
-      VARRAY_GENERIC_PTR (alias_sets, superset) = superset_entry;
+      VEC_replace (alias_set_entry, alias_sets, superset, superset_entry);
     }
 
   if (subset == 0)



More information about the Gcc-patches mailing list