Remove all_lto_gen_passes, replace with plain function calls
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Nov 2013 22:16:37 +0000 (22:16 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Nov 2013 22:16:37 +0000 (22:16 +0000)
* cgraphunit.c (ipa_passes): Don't execute all_lto_gen_passes.
* lto-streamer-out.c (lto_output, produce_asm_for_decls): No longer
static.
(pass_data_ipa_lto_gimple_out, pass_ipa_lto_gimple_out,
make_pass_ipa_lto_gimple_out, pass_data_ipa_lto_finish_out,
pass_ipa_lto_finish_out, make_pass_ipa_lto_finish_out): Remove.
* lto-streamer.h (lto_output, produce_asm_for_decls): Declare.
* pass-manager.h (GCC_PASS_LISTS, class pass_manager):
Remove all_lto_gen_passes.
* passes.c (pass_manager::dump_passes): Remove its use.
(pass_manager::register_pass): Likewise.
(ipa_read_summaries, ipa_read_optimization_summaries): Likewise.
(pass_manager::pass_manager): Don't initialize or use it.
(write_lto): New static function.
(ipa_write_summaries_1, ipa_write_optimization_summaries): Use it
instead of using all_lto_gen_passes.
* passes.def (all_lto_gen_passes, pass_ipa_lto_gimple_out,
pass_ipa_lto_finish_out): Delete.
* tree-pass.h (make_pass_ipa_lto_gimple_out,
make_pass_ipa_lto_finish_out): Don't declare.

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

gcc/ChangeLog
gcc/cgraphunit.c
gcc/lto-streamer-out.c
gcc/lto-streamer.h
gcc/pass_manager.h
gcc/passes.c
gcc/passes.def
gcc/tree-pass.h

index 8bbe5e7..498f780 100644 (file)
@@ -1,3 +1,26 @@
+2013-11-18  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * cgraphunit.c (ipa_passes): Don't execute all_lto_gen_passes.
+       * lto-streamer-out.c (lto_output, produce_asm_for_decls): No longer
+       static.
+       (pass_data_ipa_lto_gimple_out, pass_ipa_lto_gimple_out,
+       make_pass_ipa_lto_gimple_out, pass_data_ipa_lto_finish_out,
+       pass_ipa_lto_finish_out, make_pass_ipa_lto_finish_out): Remove.
+       * lto-streamer.h (lto_output, produce_asm_for_decls): Declare.
+       * pass-manager.h (GCC_PASS_LISTS, class pass_manager):
+       Remove all_lto_gen_passes.
+       * passes.c (pass_manager::dump_passes): Remove its use.
+       (pass_manager::register_pass): Likewise.
+       (ipa_read_summaries, ipa_read_optimization_summaries): Likewise.
+       (pass_manager::pass_manager): Don't initialize or use it.
+       (write_lto): New static function.
+       (ipa_write_summaries_1, ipa_write_optimization_summaries): Use it
+       instead of using all_lto_gen_passes.
+       * passes.def (all_lto_gen_passes, pass_ipa_lto_gimple_out,
+       pass_ipa_lto_finish_out): Delete.
+       * tree-pass.h (make_pass_ipa_lto_gimple_out,
+       make_pass_ipa_lto_finish_out): Don't declare.
+
 2013-11-18  Jeff Law  <law@redhat.com>
 
        * tree-ssa-threadupdate.c (redirection_data): Record two
@@ -11,7 +34,7 @@
        blocks duplicated, then duplicate them.
        (ssa_fix_duplicate_block_edges): Corresponding changes.
        (ssa_fixup_template_block, thread_single_edge):  Likewise.
-       
+
 2013-11-18  Marek Polacek  <polacek@redhat.com>
 
        * doc/invoke.texi: Extend -fsanitize=undefined documentation.
index 4a35118..cbd32aa 100644 (file)
@@ -2019,9 +2019,6 @@ ipa_passes (void)
   if (flag_generate_lto)
     targetm.asm_out.lto_start ();
 
-  execute_ipa_summary_passes ((struct ipa_opt_pass_d *)
-                             passes->all_lto_gen_passes);
-
   if (!in_lto_p)
     ipa_write_summaries ();
 
index 9a00230..5176e35 100644 (file)
@@ -1966,7 +1966,7 @@ copy_function (struct cgraph_node *node)
 
 /* Main entry point from the pass manager.  */
 
-static void
+void
 lto_output (void)
 {
   struct lto_out_decl_state *decl_state;
@@ -2016,53 +2016,6 @@ lto_output (void)
 #endif
 }
 
-namespace {
-
-const pass_data pass_data_ipa_lto_gimple_out =
-{
-  IPA_PASS, /* type */
-  "lto_gimple_out", /* name */
-  OPTGROUP_NONE, /* optinfo_flags */
-  true, /* has_gate */
-  false, /* has_execute */
-  TV_IPA_LTO_GIMPLE_OUT, /* tv_id */
-  0, /* properties_required */
-  0, /* properties_provided */
-  0, /* properties_destroyed */
-  0, /* todo_flags_start */
-  0, /* todo_flags_finish */
-};
-
-class pass_ipa_lto_gimple_out : public ipa_opt_pass_d
-{
-public:
-  pass_ipa_lto_gimple_out (gcc::context *ctxt)
-    : ipa_opt_pass_d (pass_data_ipa_lto_gimple_out, ctxt,
-                     NULL, /* generate_summary */
-                     lto_output, /* write_summary */
-                     NULL, /* read_summary */
-                     lto_output, /* write_optimization_summary */
-                     NULL, /* read_optimization_summary */
-                     NULL, /* stmt_fixup */
-                     0, /* function_transform_todo_flags_start */
-                     NULL, /* function_transform */
-                     NULL) /* variable_transform */
-  {}
-
-  /* opt_pass methods: */
-  bool gate () { return gate_lto_out (); }
-
-}; // class pass_ipa_lto_gimple_out
-
-} // anon namespace
-
-ipa_opt_pass_d *
-make_pass_ipa_lto_gimple_out (gcc::context *ctxt)
-{
-  return new pass_ipa_lto_gimple_out (ctxt);
-}
-
-
 /* Write each node in encoded by ENCODER to OB, as well as those reachable
    from it and required for correct representation of its semantics.
    Each node in ENCODER must be a global declaration or a type.  A node
@@ -2382,7 +2335,7 @@ produce_symtab (struct output_block *ob)
    this file to be written in to a section that can then be read in to
    recover these on other side.  */
 
-static void
+void
 produce_asm_for_decls (void)
 {
   struct lto_out_decl_state *out_state;
@@ -2486,50 +2439,3 @@ produce_asm_for_decls (void)
   lto_function_decl_states.release ();
   destroy_output_block (ob);
 }
-
-
-namespace {
-
-const pass_data pass_data_ipa_lto_finish_out =
-{
-  IPA_PASS, /* type */
-  "lto_decls_out", /* name */
-  OPTGROUP_NONE, /* optinfo_flags */
-  true, /* has_gate */
-  false, /* has_execute */
-  TV_IPA_LTO_DECL_OUT, /* tv_id */
-  0, /* properties_required */
-  0, /* properties_provided */
-  0, /* properties_destroyed */
-  0, /* todo_flags_start */
-  0, /* todo_flags_finish */
-};
-
-class pass_ipa_lto_finish_out : public ipa_opt_pass_d
-{
-public:
-  pass_ipa_lto_finish_out (gcc::context *ctxt)
-    : ipa_opt_pass_d (pass_data_ipa_lto_finish_out, ctxt,
-                     NULL, /* generate_summary */
-                     produce_asm_for_decls, /* write_summary */
-                     NULL, /* read_summary */
-                     produce_asm_for_decls, /* write_optimization_summary */
-                     NULL, /* read_optimization_summary */
-                     NULL, /* stmt_fixup */
-                     0, /* function_transform_todo_flags_start */
-                     NULL, /* function_transform */
-                     NULL) /* variable_transform */
-  {}
-
-  /* opt_pass methods: */
-  bool gate () { return gate_lto_out (); }
-
-}; // class pass_ipa_lto_finish_out
-
-} // anon namespace
-
-ipa_opt_pass_d *
-make_pass_ipa_lto_finish_out (gcc::context *ctxt)
-{
-  return new pass_ipa_lto_finish_out (ctxt);
-}
index 797e92e..9dac7c9 100644 (file)
@@ -862,6 +862,8 @@ extern void destroy_output_block (struct output_block *);
 extern void lto_output_tree (struct output_block *, tree, bool, bool);
 extern void lto_output_toplevel_asms (void);
 extern void produce_asm (struct output_block *ob, tree fn);
+extern void lto_output ();
+extern void produce_asm_for_decls ();
 void lto_output_decl_state_streams (struct output_block *,
                                    struct lto_out_decl_state *);
 void lto_output_decl_state_refs (struct output_block *,
index 77d78eb..9a71e9c 100644 (file)
@@ -29,7 +29,6 @@ struct register_pass_info;
   DEF_PASS_LIST (all_lowering_passes) \
   DEF_PASS_LIST (all_small_ipa_passes) \
   DEF_PASS_LIST (all_regular_ipa_passes) \
-  DEF_PASS_LIST (all_lto_gen_passes) \
   DEF_PASS_LIST (all_passes)
 
 #define DEF_PASS_LIST(LIST) PASS_LIST_NO_##LIST,
@@ -82,7 +81,6 @@ public:
   opt_pass *all_small_ipa_passes;
   opt_pass *all_lowering_passes;
   opt_pass *all_regular_ipa_passes;
-  opt_pass *all_lto_gen_passes;
   opt_pass *all_late_ipa_passes;
 
   /* A map from static pass id to optimization pass.  */
index f45ed0a..55ec70f 100644 (file)
@@ -907,7 +907,6 @@ pass_manager::dump_passes () const
   dump_pass_list (all_lowering_passes, 1);
   dump_pass_list (all_small_ipa_passes, 1);
   dump_pass_list (all_regular_ipa_passes, 1);
-  dump_pass_list (all_lto_gen_passes, 1);
   dump_pass_list (all_late_ipa_passes, 1);
   dump_pass_list (all_passes, 1);
 
@@ -1426,8 +1425,6 @@ pass_manager::register_pass (struct register_pass_info *pass_info)
   if (!success || all_instances)
     success |= position_pass (pass_info, &all_regular_ipa_passes);
   if (!success || all_instances)
-    success |= position_pass (pass_info, &all_lto_gen_passes);
-  if (!success || all_instances)
     success |= position_pass (pass_info, &all_late_ipa_passes);
   if (!success || all_instances)
     success |= position_pass (pass_info, &all_passes);
@@ -1498,7 +1495,7 @@ pass_manager::operator new (size_t sz)
 
 pass_manager::pass_manager (context *ctxt)
 : all_passes (NULL), all_small_ipa_passes (NULL), all_lowering_passes (NULL),
-  all_regular_ipa_passes (NULL), all_lto_gen_passes (NULL),
+  all_regular_ipa_passes (NULL),
   all_late_ipa_passes (NULL), passes_by_id (NULL), passes_by_id_size (0),
   m_ctxt (ctxt)
 {
@@ -1553,9 +1550,6 @@ pass_manager::pass_manager (context *ctxt)
   register_dump_files (all_regular_ipa_passes,
                       PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh
                       | PROP_cfg);
-  register_dump_files (all_lto_gen_passes,
-                      PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh
-                      | PROP_cfg);
   register_dump_files (all_late_ipa_passes,
                       PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh
                       | PROP_cfg);
@@ -2274,6 +2268,18 @@ execute_pass_list (struct opt_pass *pass)
   while (pass);
 }
 
+/* Write out all LTO data.  */
+static void
+write_lto (void)
+{
+  timevar_push (TV_IPA_LTO_GIMPLE_OUT);
+  lto_output ();
+  timevar_pop (TV_IPA_LTO_GIMPLE_OUT);
+  timevar_push (TV_IPA_LTO_DECL_OUT);
+  produce_asm_for_decls ();
+  timevar_pop (TV_IPA_LTO_DECL_OUT);
+}
+
 /* Same as execute_pass_list but assume that subpasses of IPA passes
    are local passes. If SET is not NULL, write out summaries of only
    those node in SET. */
@@ -2328,7 +2334,8 @@ ipa_write_summaries_1 (lto_symtab_encoder_t encoder)
 
   gcc_assert (!flag_wpa);
   ipa_write_summaries_2 (passes->all_regular_ipa_passes, state);
-  ipa_write_summaries_2 (passes->all_lto_gen_passes, state);
+
+  write_lto ();
 
   gcc_assert (lto_get_out_decl_state () == state);
   lto_pop_out_decl_state ();
@@ -2461,7 +2468,8 @@ ipa_write_optimization_summaries (lto_symtab_encoder_t encoder)
   gcc_assert (flag_wpa);
   pass_manager *passes = g->get_passes ();
   ipa_write_optimization_summaries_1 (passes->all_regular_ipa_passes, state);
-  ipa_write_optimization_summaries_1 (passes->all_lto_gen_passes, state);
+
+  write_lto ();
 
   gcc_assert (lto_get_out_decl_state () == state);
   lto_pop_out_decl_state ();
@@ -2509,14 +2517,13 @@ ipa_read_summaries_1 (struct opt_pass *pass)
 }
 
 
-/* Read all the summaries for all_regular_ipa_passes and all_lto_gen_passes.  */
+/* Read all the summaries for all_regular_ipa_passes.  */
 
 void
 ipa_read_summaries (void)
 {
   pass_manager *passes = g->get_passes ();
   ipa_read_summaries_1 (passes->all_regular_ipa_passes);
-  ipa_read_summaries_1 (passes->all_lto_gen_passes);
 }
 
 /* Same as execute_pass_list but assume that subpasses of IPA passes
@@ -2559,14 +2566,13 @@ ipa_read_optimization_summaries_1 (struct opt_pass *pass)
     }
 }
 
-/* Read all the summaries for all_regular_ipa_passes and all_lto_gen_passes.  */
+/* Read all the summaries for all_regular_ipa_passes.  */
 
 void
 ipa_read_optimization_summaries (void)
 {
   pass_manager *passes = g->get_passes ();
   ipa_read_optimization_summaries_1 (passes->all_regular_ipa_passes);
-  ipa_read_optimization_summaries_1 (passes->all_lto_gen_passes);
 }
 
 /* Same as execute_pass_list but assume that subpasses of IPA passes
index 49faf25..8480991 100644 (file)
@@ -111,11 +111,6 @@ along with GCC; see the file COPYING3.  If not see
   NEXT_PASS (pass_ipa_reference);
   TERMINATE_PASS_LIST ()
 
-  INSERT_PASSES_AFTER (all_lto_gen_passes)
-  NEXT_PASS (pass_ipa_lto_gimple_out);
-  NEXT_PASS (pass_ipa_lto_finish_out);  /* This must be the last LTO pass.  */
-  TERMINATE_PASS_LIST ()
-
   /* Simple IPA passes executed after the regular passes.  In WHOPR mode the
      passes are executed after partitioning and thus see just parts of the
      compiled unit.  */
index 9efee1e..77abd94 100644 (file)
@@ -458,7 +458,6 @@ extern simple_ipa_opt_pass *make_pass_early_local_passes (gcc::context *ctxt);
 
 extern ipa_opt_pass_d *make_pass_ipa_whole_program_visibility (gcc::context
                                                               *ctxt);
-extern ipa_opt_pass_d *make_pass_ipa_lto_gimple_out (gcc::context *ctxt);
 extern simple_ipa_opt_pass *make_pass_ipa_increase_alignment (gcc::context
                                                              *ctxt);
 extern ipa_opt_pass_d *make_pass_ipa_inline (gcc::context *ctxt);
@@ -470,7 +469,6 @@ extern ipa_opt_pass_d *make_pass_ipa_devirt (gcc::context *ctxt);
 extern ipa_opt_pass_d *make_pass_ipa_reference (gcc::context *ctxt);
 extern ipa_opt_pass_d *make_pass_ipa_pure_const (gcc::context *ctxt);
 extern simple_ipa_opt_pass *make_pass_ipa_pta (gcc::context *ctxt);
-extern ipa_opt_pass_d *make_pass_ipa_lto_finish_out (gcc::context *ctxt);
 extern simple_ipa_opt_pass *make_pass_ipa_tm (gcc::context *ctxt);
 extern ipa_opt_pass_d *make_pass_ipa_profile (gcc::context *ctxt);
 extern ipa_opt_pass_d *make_pass_ipa_cdtor_merge (gcc::context *ctxt);