[PATCH, trunk, PR57358] Avoid IPA-CP analysis if attribute optimize precludes it

Jan Hubicka hubicka@ucw.cz
Thu Jun 20 11:32:00 GMT 2013


> 
> 2013-06-11  Martin Jambor  <mjambor@suse.cz>
> 
> 	PR tree-optimization/57358
> 	* ipa-prop.c (ipa_func_spec_opts_forbid_analysis_p): New function.
> 	(ipa_compute_jump_functions_for_edge): Bail out if it returns true.
> 	(ipa_analyze_params_uses): Generate pessimistic info when true.
> 
> testsuite
> 	* gcc.dg/ipa/pr57358.c: New test.
> 
> Index: src/gcc/ipa-prop.c
> ===================================================================
> --- src.orig/gcc/ipa-prop.c
> +++ src/gcc/ipa-prop.c
> @@ -78,6 +78,21 @@ struct ipa_cst_ref_desc
>  
>  static alloc_pool ipa_refdesc_pool;
>  
> +/* Return true if DECL_FUNCTION_SPECIFIC_OPTIMIZATION of the decl associated
> +   with NODE should prevent us from analyzing it for the purposes of IPA-CP.  */
> +
> +static bool
> +ipa_func_spec_opts_forbid_analysis_p (struct cgraph_node *node)
> +{
> +  tree fs_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (node->symbol.decl);
> +  struct cl_optimization *os;
> +
> +  if (!fs_opts)
> +    return false;
> +  os = TREE_OPTIMIZATION (fs_opts);
> +  return !os->x_optimize || !os->x_flag_ipa_cp;
> +}

Hmm, somewhat ugly, but I suppose it is as ugly as it needs to be.
I wonder about the other IPA passes. Do we want to always ignore them?
How the ICE happens? Is it because we don't do the analysis?

Honza



More information about the Gcc-patches mailing list