Commit 38f4f02f by Bernd Schmidt Committed by Bernd Schmidt

Remove all_lto_gen_passes, replace with plain function calls

	* 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.

From-SVN: r204984
parent 867c8b03
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> 2013-11-18 Jeff Law <law@redhat.com>
* tree-ssa-threadupdate.c (redirection_data): Record two * tree-ssa-threadupdate.c (redirection_data): Record two
...@@ -11,7 +34,7 @@ ...@@ -11,7 +34,7 @@
blocks duplicated, then duplicate them. blocks duplicated, then duplicate them.
(ssa_fix_duplicate_block_edges): Corresponding changes. (ssa_fix_duplicate_block_edges): Corresponding changes.
(ssa_fixup_template_block, thread_single_edge): Likewise. (ssa_fixup_template_block, thread_single_edge): Likewise.
2013-11-18 Marek Polacek <polacek@redhat.com> 2013-11-18 Marek Polacek <polacek@redhat.com>
* doc/invoke.texi: Extend -fsanitize=undefined documentation. * doc/invoke.texi: Extend -fsanitize=undefined documentation.
...@@ -2019,9 +2019,6 @@ ipa_passes (void) ...@@ -2019,9 +2019,6 @@ ipa_passes (void)
if (flag_generate_lto) if (flag_generate_lto)
targetm.asm_out.lto_start (); targetm.asm_out.lto_start ();
execute_ipa_summary_passes ((struct ipa_opt_pass_d *)
passes->all_lto_gen_passes);
if (!in_lto_p) if (!in_lto_p)
ipa_write_summaries (); ipa_write_summaries ();
......
...@@ -1966,7 +1966,7 @@ copy_function (struct cgraph_node *node) ...@@ -1966,7 +1966,7 @@ copy_function (struct cgraph_node *node)
/* Main entry point from the pass manager. */ /* Main entry point from the pass manager. */
static void void
lto_output (void) lto_output (void)
{ {
struct lto_out_decl_state *decl_state; struct lto_out_decl_state *decl_state;
...@@ -2016,53 +2016,6 @@ lto_output (void) ...@@ -2016,53 +2016,6 @@ lto_output (void)
#endif #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 /* Write each node in encoded by ENCODER to OB, as well as those reachable
from it and required for correct representation of its semantics. from it and required for correct representation of its semantics.
Each node in ENCODER must be a global declaration or a type. A node Each node in ENCODER must be a global declaration or a type. A node
...@@ -2382,7 +2335,7 @@ produce_symtab (struct output_block *ob) ...@@ -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 this file to be written in to a section that can then be read in to
recover these on other side. */ recover these on other side. */
static void void
produce_asm_for_decls (void) produce_asm_for_decls (void)
{ {
struct lto_out_decl_state *out_state; struct lto_out_decl_state *out_state;
...@@ -2486,50 +2439,3 @@ produce_asm_for_decls (void) ...@@ -2486,50 +2439,3 @@ produce_asm_for_decls (void)
lto_function_decl_states.release (); lto_function_decl_states.release ();
destroy_output_block (ob); 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);
}
...@@ -862,6 +862,8 @@ extern void destroy_output_block (struct output_block *); ...@@ -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_tree (struct output_block *, tree, bool, bool);
extern void lto_output_toplevel_asms (void); extern void lto_output_toplevel_asms (void);
extern void produce_asm (struct output_block *ob, tree fn); 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 *, void lto_output_decl_state_streams (struct output_block *,
struct lto_out_decl_state *); struct lto_out_decl_state *);
void lto_output_decl_state_refs (struct output_block *, void lto_output_decl_state_refs (struct output_block *,
......
...@@ -29,7 +29,6 @@ struct register_pass_info; ...@@ -29,7 +29,6 @@ struct register_pass_info;
DEF_PASS_LIST (all_lowering_passes) \ DEF_PASS_LIST (all_lowering_passes) \
DEF_PASS_LIST (all_small_ipa_passes) \ DEF_PASS_LIST (all_small_ipa_passes) \
DEF_PASS_LIST (all_regular_ipa_passes) \ DEF_PASS_LIST (all_regular_ipa_passes) \
DEF_PASS_LIST (all_lto_gen_passes) \
DEF_PASS_LIST (all_passes) DEF_PASS_LIST (all_passes)
#define DEF_PASS_LIST(LIST) PASS_LIST_NO_##LIST, #define DEF_PASS_LIST(LIST) PASS_LIST_NO_##LIST,
...@@ -82,7 +81,6 @@ public: ...@@ -82,7 +81,6 @@ public:
opt_pass *all_small_ipa_passes; opt_pass *all_small_ipa_passes;
opt_pass *all_lowering_passes; opt_pass *all_lowering_passes;
opt_pass *all_regular_ipa_passes; opt_pass *all_regular_ipa_passes;
opt_pass *all_lto_gen_passes;
opt_pass *all_late_ipa_passes; opt_pass *all_late_ipa_passes;
/* A map from static pass id to optimization pass. */ /* A map from static pass id to optimization pass. */
......
...@@ -907,7 +907,6 @@ pass_manager::dump_passes () const ...@@ -907,7 +907,6 @@ pass_manager::dump_passes () const
dump_pass_list (all_lowering_passes, 1); dump_pass_list (all_lowering_passes, 1);
dump_pass_list (all_small_ipa_passes, 1); dump_pass_list (all_small_ipa_passes, 1);
dump_pass_list (all_regular_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_late_ipa_passes, 1);
dump_pass_list (all_passes, 1); dump_pass_list (all_passes, 1);
...@@ -1426,8 +1425,6 @@ pass_manager::register_pass (struct register_pass_info *pass_info) ...@@ -1426,8 +1425,6 @@ pass_manager::register_pass (struct register_pass_info *pass_info)
if (!success || all_instances) if (!success || all_instances)
success |= position_pass (pass_info, &all_regular_ipa_passes); success |= position_pass (pass_info, &all_regular_ipa_passes);
if (!success || all_instances) 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); success |= position_pass (pass_info, &all_late_ipa_passes);
if (!success || all_instances) if (!success || all_instances)
success |= position_pass (pass_info, &all_passes); success |= position_pass (pass_info, &all_passes);
...@@ -1498,7 +1495,7 @@ pass_manager::operator new (size_t sz) ...@@ -1498,7 +1495,7 @@ pass_manager::operator new (size_t sz)
pass_manager::pass_manager (context *ctxt) pass_manager::pass_manager (context *ctxt)
: all_passes (NULL), all_small_ipa_passes (NULL), all_lowering_passes (NULL), : 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), all_late_ipa_passes (NULL), passes_by_id (NULL), passes_by_id_size (0),
m_ctxt (ctxt) m_ctxt (ctxt)
{ {
...@@ -1553,9 +1550,6 @@ pass_manager::pass_manager (context *ctxt) ...@@ -1553,9 +1550,6 @@ pass_manager::pass_manager (context *ctxt)
register_dump_files (all_regular_ipa_passes, register_dump_files (all_regular_ipa_passes,
PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh
| PROP_cfg); | 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, register_dump_files (all_late_ipa_passes,
PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh
| PROP_cfg); | PROP_cfg);
...@@ -2274,6 +2268,18 @@ execute_pass_list (struct opt_pass *pass) ...@@ -2274,6 +2268,18 @@ execute_pass_list (struct opt_pass *pass)
while (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 /* 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 are local passes. If SET is not NULL, write out summaries of only
those node in SET. */ those node in SET. */
...@@ -2328,7 +2334,8 @@ ipa_write_summaries_1 (lto_symtab_encoder_t encoder) ...@@ -2328,7 +2334,8 @@ ipa_write_summaries_1 (lto_symtab_encoder_t encoder)
gcc_assert (!flag_wpa); gcc_assert (!flag_wpa);
ipa_write_summaries_2 (passes->all_regular_ipa_passes, state); 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); gcc_assert (lto_get_out_decl_state () == state);
lto_pop_out_decl_state (); lto_pop_out_decl_state ();
...@@ -2461,7 +2468,8 @@ ipa_write_optimization_summaries (lto_symtab_encoder_t encoder) ...@@ -2461,7 +2468,8 @@ ipa_write_optimization_summaries (lto_symtab_encoder_t encoder)
gcc_assert (flag_wpa); gcc_assert (flag_wpa);
pass_manager *passes = g->get_passes (); pass_manager *passes = g->get_passes ();
ipa_write_optimization_summaries_1 (passes->all_regular_ipa_passes, state); 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); gcc_assert (lto_get_out_decl_state () == state);
lto_pop_out_decl_state (); lto_pop_out_decl_state ();
...@@ -2509,14 +2517,13 @@ ipa_read_summaries_1 (struct opt_pass *pass) ...@@ -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 void
ipa_read_summaries (void) ipa_read_summaries (void)
{ {
pass_manager *passes = g->get_passes (); pass_manager *passes = g->get_passes ();
ipa_read_summaries_1 (passes->all_regular_ipa_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 /* 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) ...@@ -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 void
ipa_read_optimization_summaries (void) ipa_read_optimization_summaries (void)
{ {
pass_manager *passes = g->get_passes (); pass_manager *passes = g->get_passes ();
ipa_read_optimization_summaries_1 (passes->all_regular_ipa_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 /* Same as execute_pass_list but assume that subpasses of IPA passes
......
...@@ -111,11 +111,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -111,11 +111,6 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_ipa_reference); NEXT_PASS (pass_ipa_reference);
TERMINATE_PASS_LIST () 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 /* Simple IPA passes executed after the regular passes. In WHOPR mode the
passes are executed after partitioning and thus see just parts of the passes are executed after partitioning and thus see just parts of the
compiled unit. */ compiled unit. */
......
...@@ -458,7 +458,6 @@ extern simple_ipa_opt_pass *make_pass_early_local_passes (gcc::context *ctxt); ...@@ -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 extern ipa_opt_pass_d *make_pass_ipa_whole_program_visibility (gcc::context
*ctxt); *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 extern simple_ipa_opt_pass *make_pass_ipa_increase_alignment (gcc::context
*ctxt); *ctxt);
extern ipa_opt_pass_d *make_pass_ipa_inline (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); ...@@ -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_reference (gcc::context *ctxt);
extern ipa_opt_pass_d *make_pass_ipa_pure_const (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 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 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_profile (gcc::context *ctxt);
extern ipa_opt_pass_d *make_pass_ipa_cdtor_merge (gcc::context *ctxt); extern ipa_opt_pass_d *make_pass_ipa_cdtor_merge (gcc::context *ctxt);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment