Commit f074ff6c by Zdenek Dvorak Committed by Zdenek Dvorak

re PR middle-end/28071 (A file that can not be compiled in reasonable time/space)

	PR rtl-optimization/28071
	* basic-block.h (bb_dom_dfs_in, bb_dom_dfs_out): Declare.
	* dominance.c (bb_dom_dfs_in, bb_dom_dfs_out): New functions.
	* tree-into-ssa.c (struct dom_dfsnum): New.
	(cmp_dfsnum, find_dfsnum_interval, prune_unused_phi_nodes): New
	functions.
	(insert_phi_nodes_for): Use prune_unused_phi_nodes instead of
	compute_global_livein.
	(prepare_block_for_update, prepare_use_sites_for): Mark the uses
	in phi nodes in the correct blocks.

From-SVN: r116190
parent b43a2366
2006-08-16 Zdenek Dvorak <dvorakz@suse.cz> 2006-08-16 Zdenek Dvorak <dvorakz@suse.cz>
PR rtl-optimization/28071
* basic-block.h (bb_dom_dfs_in, bb_dom_dfs_out): Declare.
* dominance.c (bb_dom_dfs_in, bb_dom_dfs_out): New functions.
* tree-into-ssa.c (struct dom_dfsnum): New.
(cmp_dfsnum, find_dfsnum_interval, prune_unused_phi_nodes): New
functions.
(insert_phi_nodes_for): Use prune_unused_phi_nodes instead of
compute_global_livein.
(prepare_block_for_update, prepare_use_sites_for): Mark the uses
in phi nodes in the correct blocks.
2006-08-16 Zdenek Dvorak <dvorakz@suse.cz>
PR tree-optimization/28364 PR tree-optimization/28364
* tree-ssa-loop-ivopts.c (aff_combination_to_tree): Handle zero * tree-ssa-loop-ivopts.c (aff_combination_to_tree): Handle zero
correctly. correctly.
......
...@@ -988,6 +988,9 @@ extern void iterate_fix_dominators (enum cdi_direction, basic_block *, int); ...@@ -988,6 +988,9 @@ extern void iterate_fix_dominators (enum cdi_direction, basic_block *, int);
extern void verify_dominators (enum cdi_direction); extern void verify_dominators (enum cdi_direction);
extern basic_block first_dom_son (enum cdi_direction, basic_block); extern basic_block first_dom_son (enum cdi_direction, basic_block);
extern basic_block next_dom_son (enum cdi_direction, basic_block); extern basic_block next_dom_son (enum cdi_direction, basic_block);
unsigned bb_dom_dfs_in (enum cdi_direction, basic_block);
unsigned bb_dom_dfs_out (enum cdi_direction, basic_block);
extern edge try_redirect_by_replacing_jump (edge, basic_block, bool); extern edge try_redirect_by_replacing_jump (edge, basic_block, bool);
extern void break_superblocks (void); extern void break_superblocks (void);
extern void check_bb_profile (basic_block, FILE *); extern void check_bb_profile (basic_block, FILE *);
......
...@@ -909,6 +909,28 @@ dominated_by_p (enum cdi_direction dir, basic_block bb1, basic_block bb2) ...@@ -909,6 +909,28 @@ dominated_by_p (enum cdi_direction dir, basic_block bb1, basic_block bb2)
return et_below (n1, n2); return et_below (n1, n2);
} }
/* Returns the entry dfs number for basic block BB, in the direction DIR. */
unsigned
bb_dom_dfs_in (enum cdi_direction dir, basic_block bb)
{
struct et_node *n = bb->dom[dir];
gcc_assert (dom_computed[dir] == DOM_OK);
return n->dfs_num_in;
}
/* Returns the exit dfs number for basic block BB, in the direction DIR. */
unsigned
bb_dom_dfs_out (enum cdi_direction dir, basic_block bb)
{
struct et_node *n = bb->dom[dir];
gcc_assert (dom_computed[dir] == DOM_OK);
return n->dfs_num_out;
}
/* Verify invariants of dominator structure. */ /* Verify invariants of dominator structure. */
void void
verify_dominators (enum cdi_direction dir) verify_dominators (enum cdi_direction dir)
......
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