diff options
author | Richard Henderson <rth@redhat.com> | 2010-07-19 07:42:50 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2010-07-19 07:42:50 -0700 |
commit | 157be8f67b0ff8906b93ca4b7ee178f2e44fa725 (patch) | |
tree | 87cca400d98eb86595a987dbae508b5c25a54f20 /gcc | |
parent | ca90e7f6c12ddcf9f7ac890d07e168b0f2f21f1a (diff) | |
download | gcc-157be8f67b0ff8906b93ca4b7ee178f2e44fa725.zip gcc-157be8f67b0ff8906b93ca4b7ee178f2e44fa725.tar.gz gcc-157be8f67b0ff8906b93ca4b7ee178f2e44fa725.tar.bz2 |
Reliably change cgraph_state to SSA form.
From-SVN: r162306
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/tree-optimize.c | 30 |
2 files changed, 24 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bac660b..118ada7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +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> * postreload.c (reload_combine_closest_single_use): Ignore the @@ -11,6 +18,7 @@ (reload_combine): Use control_flow_insn_p rather than JUMP_P. 2010-07-19 Bingfeng Mei <bmei@broadcom.com> + * ddg.c (create_ddg): Exclude nodes of debug_insn in counting nodes of a loop. * loop-doloop.c (doloop_condition_get): Skip possible debug_insn. diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index e736b4f..5df3fdb 100644 --- a/gcc/tree-optimize.c +++ b/gcc/tree-optimize.c @@ -87,13 +87,27 @@ gate_all_early_local_passes (void) 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 = { { SIMPLE_IPA_PASS, "early_local_cleanups", /* name */ gate_all_early_local_passes, /* gate */ - NULL, /* execute */ + execute_all_early_local_passes, /* execute */ NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ @@ -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. */ static bool @@ -134,7 +136,7 @@ struct gimple_opt_pass pass_all_early_optimizations = GIMPLE_PASS, "early_optimizations", /* name */ gate_all_early_optimizations, /* gate */ - execute_early_local_optimizations, /* execute */ + NULL, /* execute */ NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ |