diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-19 14:42:50 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-19 14:42:50 +0000 |
commit | 95d2dc108325b1a0bc0cfd84e09ca5e30fb86717 (patch) | |
tree | 87cca400d98eb86595a987dbae508b5c25a54f20 /gcc/tree-optimize.c | |
parent | 06fc0957f1432c2748d148482064ae0d64c8ff5b (diff) | |
download | gcc-95d2dc108325b1a0bc0cfd84e09ca5e30fb86717.tar.gz |
Reliably change cgraph_state to SSA form.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162306 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-optimize.c')
-rw-r--r-- | gcc/tree-optimize.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index e736b4fab81..5df3fdb75cf 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 */ |