summaryrefslogtreecommitdiff
path: root/gcc/tree-optimize.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-19 14:42:50 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-19 14:42:50 +0000
commit95d2dc108325b1a0bc0cfd84e09ca5e30fb86717 (patch)
tree87cca400d98eb86595a987dbae508b5c25a54f20 /gcc/tree-optimize.c
parent06fc0957f1432c2748d148482064ae0d64c8ff5b (diff)
downloadgcc-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.c30
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 */