This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Stream cgraph_node.ipa_transforms_to_apply


> 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  <mjambor@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) \


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]