Commit 36c88f34 by Kazu Hirata Committed by Kazu Hirata

tree-ssa-propagate.c (cfg_blocks): Change the type to VEC(basic_block,heap) *.

	* tree-ssa-propagate.c (cfg_blocks): Change the type to
	VEC(basic_block,heap) *.
	(cfg_blocks_add, cfg_blocks_get, ssa_prop_init,
	ssa_prop_fini): Adjust the uses of cfg_blocks.

From-SVN: r109266
parent e597f337
...@@ -5,6 +5,11 @@ ...@@ -5,6 +5,11 @@
* tree-cfg.c (init_empty_tree_cfg, label_to_block_fn, * tree-cfg.c (init_empty_tree_cfg, label_to_block_fn,
set_bb_for_stmt): Adjust the uses of x_label_to_block_map. set_bb_for_stmt): Adjust the uses of x_label_to_block_map.
* tree-ssa-propagate.c (cfg_blocks): Change the type to
VEC(basic_block,heap) *.
(cfg_blocks_add, cfg_blocks_get, ssa_prop_init,
ssa_prop_fini): Adjust the uses of cfg_blocks.
2006-01-03 Steven Bosscher <stevenb.gcc@gmail.com> 2006-01-03 Steven Bosscher <stevenb.gcc@gmail.com>
* fold-const.c (operand_equal_p): Accept a NULL operand 0 for * fold-const.c (operand_equal_p): Accept a NULL operand 0 for
......
...@@ -130,7 +130,7 @@ static ssa_prop_visit_phi_fn ssa_prop_visit_phi; ...@@ -130,7 +130,7 @@ static ssa_prop_visit_phi_fn ssa_prop_visit_phi;
static sbitmap executable_blocks; static sbitmap executable_blocks;
/* Array of control flow edges on the worklist. */ /* Array of control flow edges on the worklist. */
static GTY(()) varray_type cfg_blocks = NULL; static VEC(basic_block,heap) *cfg_blocks;
static unsigned int cfg_blocks_num = 0; static unsigned int cfg_blocks_num = 0;
static int cfg_blocks_tail; static int cfg_blocks_tail;
...@@ -187,19 +187,23 @@ cfg_blocks_add (basic_block bb) ...@@ -187,19 +187,23 @@ cfg_blocks_add (basic_block bb)
else else
{ {
cfg_blocks_num++; cfg_blocks_num++;
if (cfg_blocks_num > VARRAY_SIZE (cfg_blocks)) if (cfg_blocks_num > VEC_length (basic_block, cfg_blocks))
{ {
/* We have to grow the array now. Adjust to queue to occupy the /* We have to grow the array now. Adjust to queue to occupy
full space of the original array. */ the full space of the original array. We do not need to
cfg_blocks_tail = VARRAY_SIZE (cfg_blocks); initialize the newly allocated portion of the array
because we keep track of CFG_BLOCKS_HEAD and
CFG_BLOCKS_HEAD. */
cfg_blocks_tail = VEC_length (basic_block, cfg_blocks);
cfg_blocks_head = 0; cfg_blocks_head = 0;
VARRAY_GROW (cfg_blocks, 2 * VARRAY_SIZE (cfg_blocks)); VEC_safe_grow (basic_block, heap, cfg_blocks, 2 * cfg_blocks_tail);
} }
else else
cfg_blocks_tail = (cfg_blocks_tail + 1) % VARRAY_SIZE (cfg_blocks); cfg_blocks_tail = ((cfg_blocks_tail + 1)
% VEC_length (basic_block, cfg_blocks));
} }
VARRAY_BB (cfg_blocks, cfg_blocks_tail) = bb; VEC_replace (basic_block, cfg_blocks, cfg_blocks_tail, bb);
SET_BIT (bb_in_list, bb->index); SET_BIT (bb_in_list, bb->index);
} }
...@@ -211,12 +215,13 @@ cfg_blocks_get (void) ...@@ -211,12 +215,13 @@ cfg_blocks_get (void)
{ {
basic_block bb; basic_block bb;
bb = VARRAY_BB (cfg_blocks, cfg_blocks_head); bb = VEC_index (basic_block, cfg_blocks, cfg_blocks_head);
gcc_assert (!cfg_blocks_empty_p ()); gcc_assert (!cfg_blocks_empty_p ());
gcc_assert (bb); gcc_assert (bb);
cfg_blocks_head = (cfg_blocks_head + 1) % VARRAY_SIZE (cfg_blocks); cfg_blocks_head = ((cfg_blocks_head + 1)
% VEC_length (basic_block, cfg_blocks));
--cfg_blocks_num; --cfg_blocks_num;
RESET_BIT (bb_in_list, bb->index); RESET_BIT (bb_in_list, bb->index);
...@@ -473,7 +478,8 @@ ssa_prop_init (void) ...@@ -473,7 +478,8 @@ ssa_prop_init (void)
if (dump_file && (dump_flags & TDF_DETAILS)) if (dump_file && (dump_flags & TDF_DETAILS))
dump_immediate_uses (dump_file); dump_immediate_uses (dump_file);
VARRAY_BB_INIT (cfg_blocks, 20, "cfg_blocks"); cfg_blocks = VEC_alloc (basic_block, heap, 20);
VEC_safe_grow (basic_block, heap, cfg_blocks, 20);
/* Initialize the values for every SSA_NAME. */ /* Initialize the values for every SSA_NAME. */
for (i = 1; i < num_ssa_names; i++) for (i = 1; i < num_ssa_names; i++)
...@@ -507,6 +513,7 @@ ssa_prop_fini (void) ...@@ -507,6 +513,7 @@ ssa_prop_fini (void)
{ {
VEC_free (tree, gc, interesting_ssa_edges); VEC_free (tree, gc, interesting_ssa_edges);
VEC_free (tree, gc, varying_ssa_edges); VEC_free (tree, gc, varying_ssa_edges);
VEC_free (basic_block, heap, cfg_blocks);
cfg_blocks = NULL; cfg_blocks = NULL;
sbitmap_free (bb_in_list); sbitmap_free (bb_in_list);
sbitmap_free (executable_blocks); sbitmap_free (executable_blocks);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment