Patchwork make tree-browser.c use a VEC instead of TREE_LIST

login
register
mail settings
Submitter Nathan Froyd
Date June 28, 2010, 12:52 p.m.
Message ID <20100628125224.GD22606@codesourcery.com>
Download mbox | patch
Permalink /patch/57139/
State New
Headers show

Comments

Nathan Froyd - June 28, 2010, 12:52 p.m.
The patch below converts the stack-like use of TREE_LISTs in
tree-browser.c into VECs.  Everything compiles fine on
x86_64-unknown-linux-gnu, but I don't think there's any good testing
infrastructure for the bits in this file, are there?

OK to commit?

-Nathan

	* tree-browser.c (TB_history_stack): Convert to a VEC.
	(TB_SET_HEAD): Adjust for new type of TB_history_stack.
	(TB_history_prev): Likewise.
Richard Guenther - June 28, 2010, 1 p.m.
On Mon, Jun 28, 2010 at 2:52 PM, Nathan Froyd <froydnj@codesourcery.com> wrote:
> The patch below converts the stack-like use of TREE_LISTs in
> tree-browser.c into VECs.  Everything compiles fine on
> x86_64-unknown-linux-gnu, but I don't think there's any good testing
> infrastructure for the bits in this file, are there?
>
> OK to commit?

Ok.

Thanks,
Richard.

> -Nathan
>
>        * tree-browser.c (TB_history_stack): Convert to a VEC.
>        (TB_SET_HEAD): Adjust for new type of TB_history_stack.
>        (TB_history_prev): Likewise.
>
> diff --git a/gcc/tree-browser.c b/gcc/tree-browser.c
> index a7c80c9..3803a50 100644
> --- a/gcc/tree-browser.c
> +++ b/gcc/tree-browser.c
> @@ -108,7 +108,7 @@ void browse_tree (tree);
>
>  /* Static variables.  */
>  static htab_t TB_up_ht;
> -static tree TB_history_stack = NULL_TREE;
> +static VEC(tree,gc) *TB_history_stack;
>  static int TB_verbose = 1;
>
>
> @@ -126,7 +126,7 @@ browse_tree (tree begin)
>   fprintf (TB_OUT_FILE, "\nTree Browser\n");
>
>  #define TB_SET_HEAD(N) do {                                           \
> -  TB_history_stack = tree_cons (NULL_TREE, (N), TB_history_stack);    \
> +  VEC_safe_push (tree, gc, TB_history_stack, N);                      \
>   head = N;                                                           \
>   if (TB_verbose)                                                     \
>     if (head)                                                         \
> @@ -876,11 +876,11 @@ find_node_with_code (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED,
>  static tree
>  TB_history_prev (void)
>  {
> -  if (TB_history_stack)
> +  if (!VEC_empty (tree, TB_history_stack))
>     {
> -      TB_history_stack = TREE_CHAIN (TB_history_stack);
> -      if (TB_history_stack)
> -       return TREE_VALUE (TB_history_stack);
> +      tree last = VEC_last (tree, TB_history_stack);
> +      VEC_pop (tree, TB_history_stack);
> +      return last;
>     }
>   return NULL_TREE;
>  }
>

Patch

diff --git a/gcc/tree-browser.c b/gcc/tree-browser.c
index a7c80c9..3803a50 100644
--- a/gcc/tree-browser.c
+++ b/gcc/tree-browser.c
@@ -108,7 +108,7 @@  void browse_tree (tree);
 
 /* Static variables.  */
 static htab_t TB_up_ht;
-static tree TB_history_stack = NULL_TREE;
+static VEC(tree,gc) *TB_history_stack;
 static int TB_verbose = 1;
 
 
@@ -126,7 +126,7 @@  browse_tree (tree begin)
   fprintf (TB_OUT_FILE, "\nTree Browser\n");
 
 #define TB_SET_HEAD(N) do {                                           \
-  TB_history_stack = tree_cons (NULL_TREE, (N), TB_history_stack);    \
+  VEC_safe_push (tree, gc, TB_history_stack, N);                      \
   head = N;                                                           \
   if (TB_verbose)                                                     \
     if (head)                                                         \
@@ -876,11 +876,11 @@  find_node_with_code (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED,
 static tree
 TB_history_prev (void)
 {
-  if (TB_history_stack)
+  if (!VEC_empty (tree, TB_history_stack))
     {
-      TB_history_stack = TREE_CHAIN (TB_history_stack);
-      if (TB_history_stack)
-	return TREE_VALUE (TB_history_stack);
+      tree last = VEC_last (tree, TB_history_stack);
+      VEC_pop (tree, TB_history_stack);
+      return last;
     }
   return NULL_TREE;
 }