Commit 736fe2d5 by Richard Guenther Committed by Richard Biener

tree-ssanames.c (release_dead_ssa_names): Do not remove callee edges here.

2010-09-22  Richard Guenther  <rguenther@suse.de>

	* tree-ssanames.c (release_dead_ssa_names): Do not remove
	callee edges here.
	* passes.c (init_optimization_passes): Remove early CFG cleanup.
	* tree-optimize.c (execute_cleanup_cfg_pre_ipa): Remove.
	(pass_cleanup_cfg): Likewise.
	(execute_fixup_cfg): Cleanup.
	* tree-pass.h (pass_cleanup_cfg): Remove.

From-SVN: r164522
parent bafa9791
2010-09-22 Richard Guenther <rguenther@suse.de>
* tree-ssanames.c (release_dead_ssa_names): Do not remove
callee edges here.
* passes.c (init_optimization_passes): Remove early CFG cleanup.
* tree-optimize.c (execute_cleanup_cfg_pre_ipa): Remove.
(pass_cleanup_cfg): Likewise.
(execute_fixup_cfg): Cleanup.
* tree-pass.h (pass_cleanup_cfg): Remove.
2010-09-22 Martin Jambor <mjambor@suse.cz>
* gimple-fold.c (fold_gimple_call): New parameter inplace, do not fold
......@@ -758,7 +758,6 @@ init_optimization_passes (void)
struct opt_pass **p = &pass_early_local_passes.pass.sub;
NEXT_PASS (pass_fixup_cfg);
NEXT_PASS (pass_tree_profile);
NEXT_PASS (pass_cleanup_cfg);
NEXT_PASS (pass_init_datastructures);
NEXT_PASS (pass_expand_omp);
......
......@@ -149,37 +149,6 @@ struct gimple_opt_pass pass_all_early_optimizations =
}
};
/* Pass: cleanup the CFG just before expanding trees to RTL.
This is just a round of label cleanups and case node grouping
because after the tree optimizers have run such cleanups may
be necessary. */
static unsigned int
execute_cleanup_cfg_pre_ipa (void)
{
cleanup_tree_cfg ();
return 0;
}
struct gimple_opt_pass pass_cleanup_cfg =
{
{
GIMPLE_PASS,
"cleanup_cfg", /* name */
NULL, /* gate */
execute_cleanup_cfg_pre_ipa, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_dump_func /* todo_flags_finish */
}
};
/* Pass: cleanup the CFG just before expanding trees to RTL.
This is just a round of label cleanups and case node grouping
......@@ -260,7 +229,7 @@ execute_free_datastructures (void)
return 0;
}
/* Pass: fixup_cfg. IPA passes, compilation of earlier functions or inlining
/* IPA passes, compilation of earlier functions or inlining
might have changed some properties, such as marked functions nothrow,
pure, const or noreturn.
Remove redundant edges and basic blocks, and create new ones if necessary.
......@@ -306,7 +275,6 @@ execute_fixup_cfg (void)
if (gimple_in_ssa_p (cfun))
{
todo |= TODO_update_ssa | TODO_cleanup_cfg;
mark_symbols_for_renaming (stmt);
update_stmt (stmt);
}
}
......@@ -316,11 +284,11 @@ execute_fixup_cfg (void)
todo |= TODO_cleanup_cfg;
}
maybe_clean_eh_stmt (stmt);
if (maybe_clean_eh_stmt (stmt)
&& gimple_purge_dead_eh_edges (bb))
todo |= TODO_cleanup_cfg;
}
if (gimple_purge_dead_eh_edges (bb))
todo |= TODO_cleanup_cfg;
FOR_EACH_EDGE (e, ei, bb->succs)
e->count = (e->count * count_scale
+ REG_BR_PROB_BASE / 2) / REG_BR_PROB_BASE;
......
......@@ -355,10 +355,8 @@ extern struct gimple_opt_pass pass_lower_resx;
extern struct gimple_opt_pass pass_build_cfg;
extern struct gimple_opt_pass pass_tree_profile;
extern struct gimple_opt_pass pass_early_tree_profile;
extern struct gimple_opt_pass pass_cleanup_cfg;
extern struct gimple_opt_pass pass_referenced_vars;
extern struct gimple_opt_pass pass_cleanup_eh;
extern struct gimple_opt_pass pass_fixup_cfg;
extern struct gimple_opt_pass pass_sra;
extern struct gimple_opt_pass pass_sra_early;
extern struct gimple_opt_pass pass_early_ipa_sra;
......
......@@ -338,8 +338,8 @@ release_dead_ssa_names (void)
int n = 0;
referenced_var_iterator rvi;
/* Current defs point to various dead SSA names that in turn points to dead
statements so bunch of dead memory is held from releasing. */
/* Current defs point to various dead SSA names that in turn point to
eventually dead variables so a bunch of memory is held live. */
FOR_EACH_REFERENCED_VAR (t, rvi)
set_current_def (t, NULL);
/* Now release the freelist. */
......@@ -356,12 +356,10 @@ release_dead_ssa_names (void)
}
FREE_SSANAMES (cfun) = NULL;
/* Cgraph edges has been invalidated and point to dead statement. We need to
remove them now and will rebuild it before next IPA pass. */
cgraph_node_remove_callees (cgraph_node (current_function_decl));
statistics_counter_event (cfun, "SSA names released", n);
if (dump_file)
fprintf (dump_file, "Released %i names, %.2f%%\n", n, n * 100.0 / num_ssa_names);
fprintf (dump_file, "Released %i names, %.2f%%\n",
n, n * 100.0 / num_ssa_names);
return 0;
}
......
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