> Hi, > > the following patch adds streaming ofcgraph_node.ipa_transforms_to_apply > so that transformation phases of IPA passes are run in LTO too. It is > done by simple streaming of pass.static_pass_number and then looking > it up among all_regular_ipa_passes. > > Bootstrapped and tested on x86_64-linux, required to make aggregate > IPA-CP work in LTO. > > OK for trunk? > > Thanks, > > Martin > > > 2012-11-03 Martin Jambor <mjam...@suse.cz> > > * lto-cgraph.c: Include tree-pass.h. > (lto_output_node): Stream node->ipa_transforms_to_apply. > (input_node): Likewise. > * Makefile.in (lto-cgraph.o): Add TREE_PASS_H to dependencies. > + count = streamer_read_hwi (ib); > + node->ipa_transforms_to_apply = NULL; > + for (i = 0; i < count; i++) > + { > + struct opt_pass *pass; > + int pi = streamer_read_hwi (ib); > + > + for (pass = all_regular_ipa_passes; pass; pass = pass->next) > + if (pass->static_pass_number == pi)
passes.c compute vector translating IDs to pass structures, please export it and use it here; OK with this change. Honza > + { > + VEC_safe_push (ipa_opt_pass, heap, node->ipa_transforms_to_apply, > + (struct ipa_opt_pass_d *) pass); > + break; > + } > + gcc_assert (pass); > + } > + > if (tag == LTO_symtab_analyzed_node) > ref = streamer_read_hwi (ib); > > Index: src/gcc/Makefile.in > =================================================================== > --- src.orig/gcc/Makefile.in > +++ src/gcc/Makefile.in > @@ -2146,7 +2146,7 @@ lto-cgraph.o: lto-cgraph.c $(CONFIG_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) \