diff options
author | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-05-27 22:06:46 +0000 |
---|---|---|
committer | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-05-27 22:06:46 +0000 |
commit | 7ea47fbd9597abc284940e3d90ee2949a1058ed1 (patch) | |
tree | e30578252db88291c4c33444ffad40db62dca180 /gcc/tree-ssa-dom.c | |
parent | 866adfb6e2f0f722c37513a34aa1bb796e1ddc14 (diff) | |
download | gcc-7ea47fbd9597abc284940e3d90ee2949a1058ed1.tar.gz |
* basic-block.h (basic_block_def): Add phi_nodes and
predictions. Remove tree_annotations.
* predict.c (tree_predicted_by_p, tree_predict_edge,
combine_predictions_for_bb): Adjust references to predictions.
* tree-cfg.c (init_empty_tree_cfg, create_bb): Don't call
create_block_annotation.
(create_block_annotation, free_blocks_annotatios,
clear_blocks_annotations): Remove.
(dump_cfg_stats): Don't print out the memory spent on
bb_ann_d.
(delete_tree_cfg_annotations): Don't call free_blocks_annotations.
* tree-flow-inline.h (bb_ann): Remove.
(phi_nodes, set_phi_nodes): Update references to phi_nodes.
* tree-flow.h (bb_ann_d): Remove.
* tree-if-conv.c (process_phi_nodes): Update a reference to
phi_nodes.
* tree-phinodes.c (reserve_phi_args_for_new_edge,
create_phi_node, remove_phi_node): Likewise.
* tree-pretty-print.c (dump_generic_bb_buff): Don't call bb_ann.
* tree-ssa-dom.c (threaded_blocks): New.
(tree_ssa_dominator_optimize): Initialize, clear, and free
threaded_blocks. Update a call to thread_through_all_blocks.
(thread_across_edge): Use threaded_blocks instead of setting
incoming_edge_threaded.
* tree-ssa-threadupdate.c (threaded_through_all_blocks): Take
a bitmap of blocks that are threaded through.
* tree.h: Move the prototype of threaded_through_blocks to
tree-flow.h.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100279 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-dom.c')
-rw-r--r-- | gcc/tree-ssa-dom.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index cb4abcf35d3..910ddce5a70 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -141,6 +141,10 @@ static VEC(tree,heap) *const_and_copies_stack; know their exact value. */ static bitmap nonzero_vars; +/* Bitmap of blocks that are scheduled to be threaded through. This + is used to communicate with thread_through_blocks. */ +static bitmap threaded_blocks; + /* Stack of SSA_NAMEs which need their NONZERO_VARS property cleared when the current block is finalized. @@ -370,6 +374,7 @@ tree_ssa_dominator_optimize (void) vrp_variables_stack = VEC_alloc (tree, heap, 20); stmts_to_rescan = VEC_alloc (tree, heap, 20); nonzero_vars = BITMAP_ALLOC (NULL); + threaded_blocks = BITMAP_ALLOC (NULL); need_eh_cleanup = BITMAP_ALLOC (NULL); /* Setup callbacks for the generic dominator tree walker. */ @@ -445,7 +450,7 @@ tree_ssa_dominator_optimize (void) free_all_edge_infos (); /* Thread jumps, creating duplicate blocks as needed. */ - cfg_altered |= thread_through_all_blocks (); + cfg_altered |= thread_through_all_blocks (threaded_blocks); /* Removal of statements may make some EH edges dead. Purge such edges from the CFG as needed. */ @@ -480,6 +485,7 @@ tree_ssa_dominator_optimize (void) /* Reinitialize the various tables. */ bitmap_clear (nonzero_vars); + bitmap_clear (threaded_blocks); htab_empty (avail_exprs); htab_empty (vrp_data); @@ -523,6 +529,7 @@ tree_ssa_dominator_optimize (void) /* Free nonzero_vars. */ BITMAP_FREE (nonzero_vars); + BITMAP_FREE (threaded_blocks); BITMAP_FREE (need_eh_cleanup); VEC_free (tree, heap, avail_exprs_stack); @@ -830,7 +837,7 @@ thread_across_edge (struct dom_walk_data *walk_data, edge e) else edge_info = allocate_edge_info (e); edge_info->redirection_target = taken_edge; - bb_ann (e->dest)->incoming_edge_threaded = true; + bitmap_set_bit (threaded_blocks, e->dest->index); } } } |