On Fri, Oct 13, 2017 at 03:38:33PM +0200, Jan Hubicka wrote:
> Hi,
> this patch enables check that no edge probabilities are missing. 
> 
> Honza
> 
>       * cfghooks.c (verify_flow_info): Check that edge probabilities are
>       set.

This broke bootstrap on x86_64-linux with Ada
(--enable-checking=yes,rtl,extra).

>From what I can see, decompose_multiword_subregs has:
1619                      /* Split the block after insn.  There will be a 
fallthru
1620                         edge, which is OK so we keep it.  We have to 
create the
1621                         exception edges ourselves.  */
1622                      fallthru = split_block (bb, insn);
1623                      rtl_make_eh_edge (NULL, bb, BB_END (bb));
1624                      bb = fallthru->dest;
1625                      insn = BB_HEAD (bb);
and rtl_make_eh_edge calls
161           make_label_edge (edge_cache, src, label,
162                            EDGE_ABNORMAL | EDGE_EH
163                            | (CALL_P (insn) ? EDGE_ABNORMAL_CALL : 0));

No idea what should initialize the probabilities.  Do probabilities make
any sense at all for EH edges (or abnormal edges)?

> 
> Index: cfghooks.c
> ===================================================================
> --- cfghooks.c        (revision 253694)
> +++ cfghooks.c        (working copy)
> @@ -160,6 +161,13 @@ verify_flow_info (void)
>                    e->src->index, e->dest->index);
>             err = 1;
>           }
> +       if (profile_status_for_fn (cfun) >= PROFILE_GUESSED
> +           && !e->probability.initialized_p ())
> +         {
> +           error ("Uninitialized probability of edge %i->%i", e->src->index,
> +                  e->dest->index);
> +           err = 1;
> +         }
>         if (!e->probability.verify ())
>           {
>             error ("verify_flow_info: Wrong probability of edge %i->%i",

        Jakub

Reply via email to