OSDN Git Service

Reliably change cgraph_state to SSA form.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Jul 2010 14:42:50 +0000 (14:42 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Jul 2010 14:42:50 +0000 (14:42 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162306 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-optimize.c

index bac660b..118ada7 100644 (file)
@@ -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.
index e736b4f..5df3fdb 100644 (file)
@@ -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 */