[Bug middle-end/54409] [4.8 Regression] internal compiler error: in remap_predicate, at ipa-inline-analysis.c:2710

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Sep 3 10:26:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54409

--- Comment #12 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-09-03 10:26:33 UTC ---
(In reply to comment #11)
> (In reply to comment #10)
> > This commit or the previous one caused a lot of ICEs (see
> > http://gcc.gnu.org/ml/gcc-testresults/2012-08/msg02988.html):
> > 
> > /opt/gcc/work/gcc/testsuite/gfortran.dg/bound_7.f90: In function 'MAIN__':
> > /opt/gcc/work/gcc/testsuite/gfortran.dg/bound_7.f90:168:0: internal compiler
> > error: vector VEC(T,base) replace domain error, in predicate_for_phi_result at
> > ipa-inline-analysis.c:2164
> >    call sub2
> >  ^
> 
> It was the previous one, either calculate_dominance_info or
> loop_optimizer_init grow SSANAMES of a function which I did not
> expect.
> 
> I'm sorry, I do not know what went wring when I was testing the
> patches.  I'm bootstrapping a simple fix:
> 
> 2012-08-31  Martin Jambor  <mjambor@suse.cz>
> 
>     * ipa-inline-analysis.c (estimate_function_body_sizes): Allocate
>     nonconstant_names after calculate_dominance_info and
>     loop_optimizer_init.
> 
> Index: src/gcc/ipa-inline-analysis.c
> ===================================================================
> --- src.orig/gcc/ipa-inline-analysis.c
> +++ src/gcc/ipa-inline-analysis.c
> @@ -2185,13 +2185,6 @@ estimate_function_body_sizes (struct cgr
>    struct ipa_node_params *parms_info = NULL;
>    VEC (predicate_t, heap) *nonconstant_names = NULL;
> 
> -  if (ipa_node_params_vector && !early && optimize)
> -    {
> -      parms_info = IPA_NODE_REF (node);
> -      VEC_safe_grow_cleared (predicate_t, heap, nonconstant_names,
> -                 VEC_length (tree, SSANAMES (my_function)));
> -    }
> -
>    info->conds = 0;
>    info->entry = 0;
> 
> @@ -2199,6 +2192,13 @@ estimate_function_body_sizes (struct cgr
>      {
>        calculate_dominance_info (CDI_DOMINATORS);
>        loop_optimizer_init (LOOPS_NORMAL | LOOPS_HAVE_RECORDED_EXITS);
> +
> +      if (ipa_node_params_vector)
> +    {
> +      parms_info = IPA_NODE_REF (node);
> +      VEC_safe_grow_cleared (predicate_t, heap, nonconstant_names,
> +                 VEC_length (tree, SSANAMES (my_function)));
> +    }
>      }
> 
>    if (dump_file)

That looks quite wasteful ... that vector will be extremely sparse.



More information about the Gcc-bugs mailing list