Commit 2b28c07a by Josh Conner Committed by Josh Conner

basic-block.h (cdi_direction): Assign values to all enumeration constants.

2007-05-04  Josh Conner  <jconner@apple.com>

	* basic-block.h (cdi_direction): Assign values to all enumeration
	constants.
	(dom_computed): Remove.
	(dom_info_state): New.
	(set_dom_info_availability): New.
	* tree-ssa-loop-im.c (determine_invariantness): Initialize
	walk_data.dom_direction.
	* cfghooks.c (delete_basic_block): Use dom_info_available_p()
	instead of dom_computed[].
	(split_edge): Likewise.
	(create_basic_block): Likewise.
	(merge_blocks): Likewise.
	* ifcvt.c (find_if_header): Likewise.
	* tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
	* tree-ssa-dce.c (remove_dead_stmt): Likewise.
	* tree-ssa.c (verify_ssa): Likewise.
	* tree-cfg.c (tree_verify_flow_info): Likewise.
	(remove_edge_and_dominated_blocks): Likewise.
	* dominance.c (dom_computed): Make static.
	(calc_dfs_tree_nonrec): Change third param to a bool.
	(calc_dfs_tree): Change second param to a bool.
	(calc_idioms): Change second param to a bool.  Use
	dom_convert_dir_to_idx.
	(init_dom_info): Validate dir before using.
	(dom_convert_dir_to_idx): New.
	(calculate_dominance_info): Use dom_convert_dir_to_idx.  New
	variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
	(free_dominance_info): Use dom_convert_dir_to_idx.
	(get_immediate_dominator): Likewise.
	(set_immediate_dominator): Likewise.
	(get_dominated_by): Likewise.
	(redirect_immediate_dominators): Likewise.
	(nearest_common_denominator): Likewise.
	(dominated_by_p): Likewise.
	(bb_dom_dfs_in): Likewise.
	(bb_dom_dfs_out): Likewise.
	(recount_dominator): Likewise.
	(iterate_fix_dominators): Likewise.
	(add_to_dominance_info): Likewise.
	(delete_from_dominance_info): Likewise.
	(first_dom_son): Likewise.
	(next_dom_son): Likewise.
	(dom_info_available_p): Likewise.
	(dom_info_state): New.
	(set_dom_info_availability): New.

From-SVN: r124439
parent acb8a4ef
2007-05-04 Josh Conner <jconner@apple.com>
* basic-block.h (cdi_direction): Assign values to all enumeration
constants.
(dom_computed): Remove.
(dom_info_state): New.
(set_dom_info_availability): New.
* tree-ssa-loop-im.c (determine_invariantness): Initialize
walk_data.dom_direction.
* cfghooks.c (delete_basic_block): Use dom_info_available_p()
instead of dom_computed[].
(split_edge): Likewise.
(create_basic_block): Likewise.
(merge_blocks): Likewise.
* ifcvt.c (find_if_header): Likewise.
* tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
* tree-ssa-dce.c (remove_dead_stmt): Likewise.
* tree-ssa.c (verify_ssa): Likewise.
* tree-cfg.c (tree_verify_flow_info): Likewise.
(remove_edge_and_dominated_blocks): Likewise.
* dominance.c (dom_computed): Make static.
(calc_dfs_tree_nonrec): Change third param to a bool.
(calc_dfs_tree): Change second param to a bool.
(calc_idioms): Change second param to a bool. Use
dom_convert_dir_to_idx.
(init_dom_info): Validate dir before using.
(dom_convert_dir_to_idx): New.
(calculate_dominance_info): Use dom_convert_dir_to_idx. New
variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
(free_dominance_info): Use dom_convert_dir_to_idx.
(get_immediate_dominator): Likewise.
(set_immediate_dominator): Likewise.
(get_dominated_by): Likewise.
(redirect_immediate_dominators): Likewise.
(nearest_common_denominator): Likewise.
(dominated_by_p): Likewise.
(bb_dom_dfs_in): Likewise.
(bb_dom_dfs_out): Likewise.
(recount_dominator): Likewise.
(iterate_fix_dominators): Likewise.
(add_to_dominance_info): Likewise.
(delete_from_dominance_info): Likewise.
(first_dom_son): Likewise.
(next_dom_son): Likewise.
(dom_info_available_p): Likewise.
(dom_info_state): New.
(set_dom_info_availability): New.
2007-05-04 Andreas Krebbel <krebbel1@de.ibm.com> 2007-05-04 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"): * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
......
...@@ -936,8 +936,8 @@ extern void reorder_basic_blocks (void); ...@@ -936,8 +936,8 @@ extern void reorder_basic_blocks (void);
enum cdi_direction enum cdi_direction
{ {
CDI_DOMINATORS, CDI_DOMINATORS = 1,
CDI_POST_DOMINATORS CDI_POST_DOMINATORS = 2
}; };
enum dom_state enum dom_state
...@@ -947,8 +947,8 @@ enum dom_state ...@@ -947,8 +947,8 @@ enum dom_state
DOM_OK /* Everything is ok. */ DOM_OK /* Everything is ok. */
}; };
extern enum dom_state dom_computed[2]; extern enum dom_state dom_info_state (enum cdi_direction);
extern void set_dom_info_availability (enum cdi_direction, enum dom_state);
extern bool dom_info_available_p (enum cdi_direction); extern bool dom_info_available_p (enum cdi_direction);
extern void calculate_dominance_info (enum cdi_direction); extern void calculate_dominance_info (enum cdi_direction);
extern void free_dominance_info (enum cdi_direction); extern void free_dominance_info (enum cdi_direction);
......
...@@ -486,9 +486,9 @@ delete_basic_block (basic_block bb) ...@@ -486,9 +486,9 @@ delete_basic_block (basic_block bb)
while (EDGE_COUNT (bb->succs) != 0) while (EDGE_COUNT (bb->succs) != 0)
remove_edge (EDGE_SUCC (bb, 0)); remove_edge (EDGE_SUCC (bb, 0));
if (dom_computed[CDI_DOMINATORS]) if (dom_info_available_p (CDI_DOMINATORS))
delete_from_dominance_info (CDI_DOMINATORS, bb); delete_from_dominance_info (CDI_DOMINATORS, bb);
if (dom_computed[CDI_POST_DOMINATORS]) if (dom_info_available_p (CDI_POST_DOMINATORS))
delete_from_dominance_info (CDI_POST_DOMINATORS, bb); delete_from_dominance_info (CDI_POST_DOMINATORS, bb);
/* Remove the basic block from the array. */ /* Remove the basic block from the array. */
...@@ -527,10 +527,10 @@ split_edge (edge e) ...@@ -527,10 +527,10 @@ split_edge (edge e)
single_succ_edge (ret)->flags |= EDGE_IRREDUCIBLE_LOOP; single_succ_edge (ret)->flags |= EDGE_IRREDUCIBLE_LOOP;
} }
if (dom_computed[CDI_DOMINATORS]) if (dom_info_available_p (CDI_DOMINATORS))
set_immediate_dominator (CDI_DOMINATORS, ret, single_pred (ret)); set_immediate_dominator (CDI_DOMINATORS, ret, single_pred (ret));
if (dom_computed[CDI_DOMINATORS] >= DOM_NO_FAST_QUERY) if (dom_info_state (CDI_DOMINATORS) >= DOM_NO_FAST_QUERY)
{ {
/* There are two cases: /* There are two cases:
...@@ -586,9 +586,9 @@ create_basic_block (void *head, void *end, basic_block after) ...@@ -586,9 +586,9 @@ create_basic_block (void *head, void *end, basic_block after)
ret = cfg_hooks->create_basic_block (head, end, after); ret = cfg_hooks->create_basic_block (head, end, after);
if (dom_computed[CDI_DOMINATORS]) if (dom_info_available_p (CDI_DOMINATORS))
add_to_dominance_info (CDI_DOMINATORS, ret); add_to_dominance_info (CDI_DOMINATORS, ret);
if (dom_computed[CDI_POST_DOMINATORS]) if (dom_info_available_p (CDI_POST_DOMINATORS))
add_to_dominance_info (CDI_POST_DOMINATORS, ret); add_to_dominance_info (CDI_POST_DOMINATORS, ret);
return ret; return ret;
...@@ -676,12 +676,12 @@ merge_blocks (basic_block a, basic_block b) ...@@ -676,12 +676,12 @@ merge_blocks (basic_block a, basic_block b)
/* B hasn't quite yet ceased to exist. Attempt to prevent mishap. */ /* B hasn't quite yet ceased to exist. Attempt to prevent mishap. */
b->preds = b->succs = NULL; b->preds = b->succs = NULL;
if (dom_computed[CDI_DOMINATORS]) if (dom_info_available_p (CDI_DOMINATORS))
redirect_immediate_dominators (CDI_DOMINATORS, b, a); redirect_immediate_dominators (CDI_DOMINATORS, b, a);
if (dom_computed[CDI_DOMINATORS]) if (dom_info_available_p (CDI_DOMINATORS))
delete_from_dominance_info (CDI_DOMINATORS, b); delete_from_dominance_info (CDI_DOMINATORS, b);
if (dom_computed[CDI_POST_DOMINATORS]) if (dom_info_available_p (CDI_POST_DOMINATORS))
delete_from_dominance_info (CDI_POST_DOMINATORS, b); delete_from_dominance_info (CDI_POST_DOMINATORS, b);
expunge_block (b); expunge_block (b);
......
...@@ -2932,7 +2932,7 @@ find_if_header (basic_block test_bb, int pass) ...@@ -2932,7 +2932,7 @@ find_if_header (basic_block test_bb, int pass)
&& find_cond_trap (test_bb, then_edge, else_edge)) && find_cond_trap (test_bb, then_edge, else_edge))
goto success; goto success;
if (dom_computed[CDI_POST_DOMINATORS] >= DOM_NO_FAST_QUERY if (dom_info_state (CDI_POST_DOMINATORS) >= DOM_NO_FAST_QUERY
&& (! HAVE_conditional_execution || reload_completed)) && (! HAVE_conditional_execution || reload_completed))
{ {
if (find_if_case_1 (test_bb, then_edge, else_edge)) if (find_if_case_1 (test_bb, then_edge, else_edge))
......
...@@ -3865,7 +3865,7 @@ tree_verify_flow_info (void) ...@@ -3865,7 +3865,7 @@ tree_verify_flow_info (void)
} }
} }
if (dom_computed[CDI_DOMINATORS] >= DOM_NO_FAST_QUERY) if (dom_info_state (CDI_DOMINATORS) >= DOM_NO_FAST_QUERY)
verify_dominators (CDI_DOMINATORS); verify_dominators (CDI_DOMINATORS);
return err; return err;
...@@ -5375,7 +5375,7 @@ remove_edge_and_dominated_blocks (edge e) ...@@ -5375,7 +5375,7 @@ remove_edge_and_dominated_blocks (edge e)
basic_block bb, dbb; basic_block bb, dbb;
bitmap_iterator bi; bitmap_iterator bi;
if (!dom_computed[CDI_DOMINATORS]) if (!dom_info_available_p (CDI_DOMINATORS))
{ {
remove_edge (e); remove_edge (e);
return; return;
......
...@@ -609,7 +609,7 @@ cleanup_tree_cfg (void) ...@@ -609,7 +609,7 @@ cleanup_tree_cfg (void)
If dominance information is available, there cannot be any unreachable If dominance information is available, there cannot be any unreachable
blocks. */ blocks. */
if (!dom_computed[CDI_DOMINATORS]) if (!dom_info_available_p (CDI_DOMINATORS))
{ {
changed = delete_unreachable_blocks (); changed = delete_unreachable_blocks ();
calculate_dominance_info (CDI_DOMINATORS); calculate_dominance_info (CDI_DOMINATORS);
...@@ -624,7 +624,7 @@ cleanup_tree_cfg (void) ...@@ -624,7 +624,7 @@ cleanup_tree_cfg (void)
changed |= cleanup_tree_cfg_1 (); changed |= cleanup_tree_cfg_1 ();
gcc_assert (dom_computed[CDI_DOMINATORS]); gcc_assert (dom_info_available_p (CDI_DOMINATORS));
compact_blocks (); compact_blocks ();
#ifdef ENABLE_CHECKING #ifdef ENABLE_CHECKING
......
...@@ -591,7 +591,7 @@ remove_dead_stmt (block_stmt_iterator *i, basic_block bb) ...@@ -591,7 +591,7 @@ remove_dead_stmt (block_stmt_iterator *i, basic_block bb)
basic_block post_dom_bb; basic_block post_dom_bb;
/* The post dominance info has to be up-to-date. */ /* The post dominance info has to be up-to-date. */
gcc_assert (dom_computed[CDI_POST_DOMINATORS] == DOM_OK); gcc_assert (dom_info_state (CDI_POST_DOMINATORS) == DOM_OK);
/* Get the immediate post dominator of bb. */ /* Get the immediate post dominator of bb. */
post_dom_bb = get_immediate_dominator (CDI_POST_DOMINATORS, bb); post_dom_bb = get_immediate_dominator (CDI_POST_DOMINATORS, bb);
......
...@@ -794,6 +794,7 @@ determine_invariantness (void) ...@@ -794,6 +794,7 @@ determine_invariantness (void)
struct dom_walk_data walk_data; struct dom_walk_data walk_data;
memset (&walk_data, 0, sizeof (struct dom_walk_data)); memset (&walk_data, 0, sizeof (struct dom_walk_data));
walk_data.dom_direction = CDI_DOMINATORS;
walk_data.before_dom_children_before_stmts = determine_invariantness_stmt; walk_data.before_dom_children_before_stmts = determine_invariantness_stmt;
init_walk_dominator_tree (&walk_data); init_walk_dominator_tree (&walk_data);
...@@ -864,6 +865,7 @@ move_computations (void) ...@@ -864,6 +865,7 @@ move_computations (void)
struct dom_walk_data walk_data; struct dom_walk_data walk_data;
memset (&walk_data, 0, sizeof (struct dom_walk_data)); memset (&walk_data, 0, sizeof (struct dom_walk_data));
walk_data.dom_direction = CDI_DOMINATORS;
walk_data.before_dom_children_before_stmts = move_computations_stmt; walk_data.before_dom_children_before_stmts = move_computations_stmt;
init_walk_dominator_tree (&walk_data); init_walk_dominator_tree (&walk_data);
......
...@@ -606,7 +606,7 @@ verify_ssa (bool check_modified_stmt) ...@@ -606,7 +606,7 @@ verify_ssa (bool check_modified_stmt)
basic_block *definition_block = XCNEWVEC (basic_block, num_ssa_names); basic_block *definition_block = XCNEWVEC (basic_block, num_ssa_names);
ssa_op_iter iter; ssa_op_iter iter;
tree op; tree op;
enum dom_state orig_dom_state = dom_computed[CDI_DOMINATORS]; enum dom_state orig_dom_state = dom_info_state (CDI_DOMINATORS);
bitmap names_defined_in_bb = BITMAP_ALLOC (NULL); bitmap names_defined_in_bb = BITMAP_ALLOC (NULL);
gcc_assert (!need_ssa_update_p ()); gcc_assert (!need_ssa_update_p ());
...@@ -747,7 +747,7 @@ verify_ssa (bool check_modified_stmt) ...@@ -747,7 +747,7 @@ verify_ssa (bool check_modified_stmt)
if (orig_dom_state == DOM_NONE) if (orig_dom_state == DOM_NONE)
free_dominance_info (CDI_DOMINATORS); free_dominance_info (CDI_DOMINATORS);
else else
dom_computed[CDI_DOMINATORS] = orig_dom_state; set_dom_info_availability (CDI_DOMINATORS, orig_dom_state);
BITMAP_FREE (names_defined_in_bb); BITMAP_FREE (names_defined_in_bb);
timevar_pop (TV_TREE_SSA_VERIFY); timevar_pop (TV_TREE_SSA_VERIFY);
......
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