aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-dce.c
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2005-04-23 15:14:32 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2005-04-23 15:14:32 +0000
commit906532aaa9d3e8502c06e227e921626918acfc73 (patch)
treef425e24dacbc892f7623625e823ad8714d333313 /gcc/tree-ssa-dce.c
parent7df5a591b2c2d8a905af2c25a1ddbd8eaffa00ab (diff)
downloadgcc-906532aaa9d3e8502c06e227e921626918acfc73.zip
gcc-906532aaa9d3e8502c06e227e921626918acfc73.tar.gz
gcc-906532aaa9d3e8502c06e227e921626918acfc73.tar.bz2
tree-ssa-dce.c (worklist): Change to VEC(tree,heap).
* tree-ssa-dce.c (worklist): Change to VEC(tree,heap). (mark_stmt_necessary, propagate_necessity, mark_really_necessary_kill_operand_phis): Update uses of worklist. (tree_dce_init): Allocate worklist using VEC_alloc. (tree_dce_done): Free worklist using VEC_free. From-SVN: r98618
Diffstat (limited to 'gcc/tree-ssa-dce.c')
-rw-r--r--gcc/tree-ssa-dce.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index f152321..fd58ea1 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -74,7 +74,7 @@ static struct stmt_stats
int removed_phis;
} stats;
-static varray_type worklist;
+static VEC(tree,heap) *worklist;
/* Vector indicating an SSA name has already been processed and marked
as necessary. */
@@ -235,7 +235,7 @@ mark_stmt_necessary (tree stmt, bool add_to_worklist)
NECESSARY (stmt) = 1;
if (add_to_worklist)
- VARRAY_PUSH_TREE (worklist, stmt);
+ VEC_safe_push (tree, heap, worklist, stmt);
}
/* Mark the statement defining operand OP as necessary. PHIONLY is true
@@ -263,7 +263,7 @@ mark_operand_necessary (tree op, bool phionly)
return;
NECESSARY (stmt) = 1;
- VARRAY_PUSH_TREE (worklist, stmt);
+ VEC_safe_push (tree, heap, worklist, stmt);
}
@@ -472,11 +472,10 @@ propagate_necessity (struct edge_list *el)
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "\nProcessing worklist:\n");
- while (VARRAY_ACTIVE_SIZE (worklist) > 0)
+ while (VEC_length (tree, worklist) > 0)
{
/* Take `i' from worklist. */
- i = VARRAY_TOP_TREE (worklist);
- VARRAY_POP (worklist);
+ i = VEC_pop (tree, worklist);
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -603,10 +602,9 @@ mark_really_necessary_kill_operand_phis (void)
/* Mark all virtual phis still in use as necessary, and all of their
arguments that are phis as necessary. */
- while (VARRAY_ACTIVE_SIZE (worklist) > 0)
+ while (VEC_length (tree, worklist) > 0)
{
- tree use = VARRAY_TOP_TREE (worklist);
- VARRAY_POP (worklist);
+ tree use = VEC_pop (tree, worklist);
for (i = 0; i < PHI_NUM_ARGS (use); i++)
mark_operand_necessary (PHI_ARG_DEF (use, i), true);
@@ -827,7 +825,7 @@ tree_dce_init (bool aggressive)
processed = sbitmap_alloc (num_ssa_names + 1);
sbitmap_zero (processed);
- VARRAY_TREE_INIT (worklist, 64, "work list");
+ worklist = VEC_alloc (tree, heap, 64);
}
/* Cleanup after this pass. */
@@ -848,6 +846,8 @@ tree_dce_done (bool aggressive)
}
sbitmap_free (processed);
+
+ VEC_free (tree, heap, worklist);
}
/* Main routine to eliminate dead code.