aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2004-09-20 15:45:21 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2004-09-20 15:45:21 +0000
commitd6fd4b8d1160a795f3f20ca3007bea78290c5415 (patch)
tree5f94bb0f06df3da62ef2f314d4c40a0952939b27
parentc2dda19b3b1e6e53a807ef3446c6fd8a38be93e5 (diff)
downloadgcc-d6fd4b8d1160a795f3f20ca3007bea78290c5415.zip
gcc-d6fd4b8d1160a795f3f20ca3007bea78290c5415.tar.gz
gcc-d6fd4b8d1160a795f3f20ca3007bea78290c5415.tar.bz2
tree-ssa-pre.c (compute_antic_aux): Use malloc'd worklist, to avoid generating useless garbage.
2004-09-20 Daniel Berlin <dberlin@dberlin.org> * tree-ssa-pre.c (compute_antic_aux): Use malloc'd worklist, to avoid generating useless garbage. From-SVN: r87760
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-ssa-pre.c19
2 files changed, 16 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1a28aa2..69fd932 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-20 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-pre.c (compute_antic_aux): Use malloc'd worklist, to avoid
+ generating useless garbage.
+
2004-09-20 Paolo Bonzini <bonzini@gnu.org>
* builtins.c (fold_builtin): Call the new omonymous
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 43257bc..2c9b4ee 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -510,8 +510,10 @@ bitmap_insert_into_set (bitmap_set_t set, tree expr)
gcc_assert (val);
if (!is_gimple_min_invariant (val))
+ {
bitmap_set_bit (set->values, VALUE_HANDLE_ID (val));
- bitmap_set_bit (set->expressions, SSA_NAME_VERSION (expr));
+ bitmap_set_bit (set->expressions, SSA_NAME_VERSION (expr));
+ }
}
/* Insert EXPR into SET. */
@@ -1098,6 +1100,8 @@ clean (value_set_t set)
}
}
+DEF_VEC_MALLOC_P (basic_block);
+
/* Compute the ANTIC set for BLOCK.
ANTIC_OUT[BLOCK] = intersection of ANTIC_IN[b] for all succ(BLOCK), if
@@ -1164,24 +1168,23 @@ compute_antic_aux (basic_block block)
them. */
else
{
- varray_type worklist;
+ VEC (basic_block) * worklist;
edge e;
size_t i;
basic_block bprime, first;
- VARRAY_BB_INIT (worklist, 1, "succ");
+ worklist = VEC_alloc (basic_block, 2);
e = block->succ;
while (e)
{
- VARRAY_PUSH_BB (worklist, e->dest);
+ VEC_safe_push (basic_block, worklist, e->dest);
e = e->succ_next;
}
- first = VARRAY_BB (worklist, 0);
+ first = VEC_index (basic_block, worklist, 0);
set_copy (ANTIC_OUT, ANTIC_IN (first));
- for (i = 1; i < VARRAY_ACTIVE_SIZE (worklist); i++)
+ for (i = 1; VEC_iterate (basic_block, worklist, i, bprime); i++)
{
- bprime = VARRAY_BB (worklist, i);
node = ANTIC_OUT->head;
while (node)
{
@@ -1193,7 +1196,7 @@ compute_antic_aux (basic_block block)
node = next;
}
}
- VARRAY_CLEAR (worklist);
+ VEC_free (basic_block, worklist);
}
/* Generate ANTIC_OUT - TMP_GEN */