diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2004-09-20 15:45:21 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@gcc.gnu.org> | 2004-09-20 15:45:21 +0000 |
commit | d6fd4b8d1160a795f3f20ca3007bea78290c5415 (patch) | |
tree | 5f94bb0f06df3da62ef2f314d4c40a0952939b27 /gcc | |
parent | c2dda19b3b1e6e53a807ef3446c6fd8a38be93e5 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-ssa-pre.c | 19 |
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 */ |