Check that there are no missing probabilities
Jakub Jelinek
jakub@redhat.com
Fri Oct 13 17:13:00 GMT 2017
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
More information about the Gcc-patches
mailing list