> 
> 2013-06-11  Martin Jambor  <mjam...@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

Reply via email to