OSDN Git Service

* passes.c (init_optimization_passes): Document
authordnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Nov 2005 18:05:38 +0000 (18:05 +0000)
committerdnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Nov 2005 18:05:38 +0000 (18:05 +0000)
sequencing of passes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107425 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/passes.c

index 7a754dc..a117bbc 100644 (file)
@@ -1,3 +1,8 @@
+2005-11-23  Diego Novillo  <dnovillo@redhat.com>
+
+       * passes.c (init_optimization_passes): Document
+       sequencing of passes.
+
 2005-11-23  Kazu Hirata  <kazu@codesourcery.com>
 
        * config/m68k/predicates.md (pcrel_address, extend_operator,
index 0053f70..7add120 100644 (file)
@@ -420,7 +420,25 @@ next_pass_1 (struct tree_opt_pass **list, struct tree_opt_pass *pass)
           
 }
 
-/* Construct the pass tree.  */
+/* Construct the pass tree.  The sequencing of passes is driven by
+   the cgraph routines:
+
+   cgraph_finalize_compilation_unit ()
+       for each node N in the cgraph
+          cgraph_analyze_function (N)
+              cgraph_lower_function (N) -> all_lowering_passes
+
+   If we are optimizing, cgraph_optimize is then invoked:
+
+   cgraph_optimize ()
+       ipa_passes ()                   -> all_ipa_passes
+       cgraph_expand_all_functions ()
+           for each node N in the cgraph
+              cgraph_expand_function (N)
+                  cgraph_lower_function (N)    -> Now a NOP.
+                  lang_hooks.callgraph.expand_function (DECL (N))
+                       tree_rest_of_compilation (DECL (N))  -> all_passes
+*/
 
 void
 init_optimization_passes (void)
@@ -439,9 +457,8 @@ init_optimization_passes (void)
   NEXT_PASS (pass_ipa_type_escape);
   *p = NULL;
 
-  /* All passes needed to lower the function into shape optimizers can operate
-     on.  These passes are performed before interprocedural passes, unlike rest
-     of local passes (all_passes).  */
+  /* All passes needed to lower the function into shape optimizers can
+     operate on.  */
   p = &all_lowering_passes;
   NEXT_PASS (pass_remove_useless_stmts);
   NEXT_PASS (pass_mudflap_1);