Commit 157be8f6 by Richard Henderson Committed by Richard Henderson

Reliably change cgraph_state to SSA form.

From-SVN: r162306
parent ca90e7f6
2010-07-19 Richard Henderson <rth@redhat.com>
* tree-optimize.c (execute_all_early_local_passes): New. Change
cgraph_state here ...
(execute_early_local_optimizations): ... not here. Remove.
(pass_early_local_passes, pass_all_early_optimizations): Update.
2010-07-19 Bernd Schmidt <bernds@codesourcery.com> 2010-07-19 Bernd Schmidt <bernds@codesourcery.com>
* postreload.c (reload_combine_closest_single_use): Ignore the * postreload.c (reload_combine_closest_single_use): Ignore the
...@@ -11,6 +18,7 @@ ...@@ -11,6 +18,7 @@
(reload_combine): Use control_flow_insn_p rather than JUMP_P. (reload_combine): Use control_flow_insn_p rather than JUMP_P.
2010-07-19 Bingfeng Mei <bmei@broadcom.com> 2010-07-19 Bingfeng Mei <bmei@broadcom.com>
* ddg.c (create_ddg): Exclude nodes of debug_insn in counting nodes * ddg.c (create_ddg): Exclude nodes of debug_insn in counting nodes
of a loop. of a loop.
* loop-doloop.c (doloop_condition_get): Skip possible debug_insn. * loop-doloop.c (doloop_condition_get): Skip possible debug_insn.
......
...@@ -87,13 +87,27 @@ gate_all_early_local_passes (void) ...@@ -87,13 +87,27 @@ gate_all_early_local_passes (void)
return (!seen_error () && !in_lto_p); return (!seen_error () && !in_lto_p);
} }
static unsigned int
execute_all_early_local_passes (void)
{
/* Once this pass (and its sub-passes) are complete, all functions
will be in SSA form. Technically this state change is happening
a tad early, since the sub-passes have not yet run, but since
none of the sub-passes are IPA passes and do not create new
functions, this is ok. We're setting this value for the benefit
of IPA passes that follow. */
if (cgraph_state < CGRAPH_STATE_IPA_SSA)
cgraph_state = CGRAPH_STATE_IPA_SSA;
return 0;
}
struct simple_ipa_opt_pass pass_early_local_passes = struct simple_ipa_opt_pass pass_early_local_passes =
{ {
{ {
SIMPLE_IPA_PASS, SIMPLE_IPA_PASS,
"early_local_cleanups", /* name */ "early_local_cleanups", /* name */
gate_all_early_local_passes, /* gate */ gate_all_early_local_passes, /* gate */
NULL, /* execute */ execute_all_early_local_passes, /* execute */
NULL, /* sub */ NULL, /* sub */
NULL, /* next */ NULL, /* next */
0, /* static_pass_number */ 0, /* static_pass_number */
...@@ -106,18 +120,6 @@ struct simple_ipa_opt_pass pass_early_local_passes = ...@@ -106,18 +120,6 @@ struct simple_ipa_opt_pass pass_early_local_passes =
} }
}; };
static unsigned int
execute_early_local_optimizations (void)
{
/* First time we start with early optimization we need to advance
cgraph state so newly inserted functions are also early optimized.
However we execute early local optimizations for lately inserted
functions, in that case don't reset cgraph state back to IPA_SSA. */
if (cgraph_state < CGRAPH_STATE_IPA_SSA)
cgraph_state = CGRAPH_STATE_IPA_SSA;
return 0;
}
/* Gate: execute, or not, all of the non-trivial optimizations. */ /* Gate: execute, or not, all of the non-trivial optimizations. */
static bool static bool
...@@ -134,7 +136,7 @@ struct gimple_opt_pass pass_all_early_optimizations = ...@@ -134,7 +136,7 @@ struct gimple_opt_pass pass_all_early_optimizations =
GIMPLE_PASS, GIMPLE_PASS,
"early_optimizations", /* name */ "early_optimizations", /* name */
gate_all_early_optimizations, /* gate */ gate_all_early_optimizations, /* gate */
execute_early_local_optimizations, /* execute */ NULL, /* execute */
NULL, /* sub */ NULL, /* sub */
NULL, /* next */ NULL, /* next */
0, /* static_pass_number */ 0, /* static_pass_number */
......
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