From: Martin Jambor Date: Wed, 7 Nov 2012 09:28:50 +0000 (+0100) Subject: lto-cgraph.c: Include tree-pass.h. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7d57274b36a1aac0e2c38ab1073ce12b29f97ff4;p=gcc.git lto-cgraph.c: Include tree-pass.h. 2012-11-07 Martin Jambor * lto-cgraph.c: Include tree-pass.h. (lto_output_node): Stream node->ipa_transforms_to_apply. (input_node): Likewise. * tree-pass.h (passes_by_id): Declare. (passes_by_id_size): Likewise. * Makefile.in (lto-cgraph.o): Add TREE_PASS_H to dependencies. From-SVN: r193286 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e1b7657e7e0..0445594efc1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-11-07 Martin Jambor + + * lto-cgraph.c: Include tree-pass.h. + (lto_output_node): Stream node->ipa_transforms_to_apply. + (input_node): Likewise. + * tree-pass.h (passes_by_id): Declare. + (passes_by_id_size): Likewise. + * Makefile.in (lto-cgraph.o): Add TREE_PASS_H to dependencies. + 2012-11-07 Jan Hubicka * ipa-inline-analysis.c (true_predicate, single_cond_predicate, diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 9aea03ddc46..816d150d002 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -2143,7 +2143,7 @@ lto-cgraph.o: lto-cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(HASHTAB_H) langhooks.h $(BASIC_BLOCK_H) \ $(TREE_FLOW_H) $(CGRAPH_H) $(FUNCTION_H) $(GGC_H) $(DIAGNOSTIC_CORE_H) \ $(EXCEPT_H) $(TIMEVAR_H) pointer-set.h $(LTO_STREAMER_H) \ - $(GCOV_IO_H) $(DATA_STREAMER_H) $(TREE_STREAMER_H) + $(GCOV_IO_H) $(DATA_STREAMER_H) $(TREE_STREAMER_H) $(TREE_PASS_H) lto-streamer-in.o: lto-streamer-in.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) toplev.h $(DIAGNOSTIC_CORE_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) \ input.h $(HASHTAB_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TREE_PASS_H) \ diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c index e8f171824a1..b52a8e3a55c 100644 --- a/gcc/lto-cgraph.c +++ b/gcc/lto-cgraph.c @@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. If not see #include "data-streamer.h" #include "tree-streamer.h" #include "gcov-io.h" +#include "tree-pass.h" static void output_cgraph_opt_summary (void); static void input_cgraph_opt_summary (VEC (symtab_node, heap) * nodes); @@ -377,6 +378,8 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node, intptr_t ref; bool in_other_partition = false; struct cgraph_node *clone_of; + struct ipa_opt_pass_d *pass; + int i; boundary_p = !lto_symtab_encoder_in_partition_p (encoder, (symtab_node)node); @@ -432,6 +435,12 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node, streamer_write_hwi_stream (ob->main_stream, node->count); streamer_write_hwi_stream (ob->main_stream, node->count_materialization_scale); + streamer_write_hwi_stream (ob->main_stream, + VEC_length (ipa_opt_pass, + node->ipa_transforms_to_apply)); + FOR_EACH_VEC_ELT (ipa_opt_pass, node->ipa_transforms_to_apply, i, pass) + streamer_write_hwi_stream (ob->main_stream, pass->pass.static_pass_number); + if (tag == LTO_symtab_analyzed_node) { if (node->global.inlined_to) @@ -897,6 +906,7 @@ input_node (struct lto_file_decl_data *file_data, int ref = LCC_NOT_FOUND, ref2 = LCC_NOT_FOUND; int clone_ref; int order; + int i, count; order = streamer_read_hwi (ib) + order_base; clone_ref = streamer_read_hwi (ib); @@ -919,6 +929,19 @@ input_node (struct lto_file_decl_data *file_data, node->count = streamer_read_hwi (ib); node->count_materialization_scale = streamer_read_hwi (ib); + count = streamer_read_hwi (ib); + node->ipa_transforms_to_apply = NULL; + for (i = 0; i < count; i++) + { + struct opt_pass *pass; + int pid = streamer_read_hwi (ib); + + gcc_assert (pid < passes_by_id_size); + pass = passes_by_id[pid]; + VEC_safe_push (ipa_opt_pass, heap, node->ipa_transforms_to_apply, + (struct ipa_opt_pass_d *) pass); + } + if (tag == LTO_symtab_analyzed_node) ref = streamer_read_hwi (ib); diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 8ed2d986ada..09ec531f27b 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -544,6 +544,9 @@ extern void register_pass (struct register_pass_info *); directly in jump threading, and avoid peeling them next time. */ extern bool first_pass_instance; +extern struct opt_pass **passes_by_id; +extern int passes_by_id_size; + /* Declare for plugins. */ extern void do_per_function_toporder (void (*) (void *), void *);