From: hubicka Date: Mon, 3 Jul 2017 12:43:19 +0000 (+0000) Subject: * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8c3196e11dc5d2b2b14eb43b3a7c2eef3a508d0b;p=thirdparty%2Fgcc.git * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249908 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3d0826ae6c9e..dd4c44bf03bc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2017-07-02 Jan Hubicka + + * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating. + 2017-07-02 Jan Hubicka * tree-cfgcleanup.c (want_merge_blocks_p): New function. diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index e0cee12a69eb..248373194f5e 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1051,6 +1051,7 @@ gimple_find_sub_bbs (gimple_seq seq, gimple_stmt_iterator *gsi) struct omp_region *cur_region = NULL; profile_count cnt = profile_count::zero (); int freq = 0; + bool all = true; int cur_omp_region_idx = 0; int mer = make_edges_bb (bb, &cur_region, &cur_omp_region_idx); @@ -1061,12 +1062,16 @@ gimple_find_sub_bbs (gimple_seq seq, gimple_stmt_iterator *gsi) edge_iterator ei; FOR_EACH_EDGE (e, ei, bb->preds) { - cnt += e->count; + if (e->count.initialized_p ()) + cnt += e->count; + else + all = false; freq += EDGE_FREQUENCY (e); } - bb->count = cnt; - bb->frequency = freq; tree_guess_outgoing_edge_probabilities (bb); + if (all || profile_status_for_fn (cfun) == PROFILE_READ) + bb->count = cnt; + bb->frequency = freq; FOR_EACH_EDGE (e, ei, bb->succs) e->count = bb->count.apply_probability (e->probability);