diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2017-06-06 10:07:31 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2017-06-06 08:07:31 +0000 |
commit | 52261a21e8e74b98a943b2e9de1b9bef659bb28f (patch) | |
tree | f665b1228f58eeb2c1de5f21abf8a0c865ad3f74 /gcc/tree-cfg.c | |
parent | ce6ec23497cbe4cbac8165b927deaba220a523d8 (diff) | |
download | gcc-52261a21e8e74b98a943b2e9de1b9bef659bb28f.zip gcc-52261a21e8e74b98a943b2e9de1b9bef659bb28f.tar.gz gcc-52261a21e8e74b98a943b2e9de1b9bef659bb28f.tar.bz2 |
predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY.
* predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY.
(tree_guess_outgoing_edge_probabilities): New.
* predict.h (tree_guess_outgoing_edge_probabilities): Declare.
* tree-cfg.c (gimple_find_sub_bbs): Propagate profile.
From-SVN: r248912
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 286cc79..1d5271a 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1048,10 +1048,27 @@ gimple_find_sub_bbs (gimple_seq seq, gimple_stmt_iterator *gsi) while (bb != afterbb) { struct omp_region *cur_region = NULL; + profile_count cnt = profile_count::zero (); + int freq = 0; + int cur_omp_region_idx = 0; int mer = make_edges_bb (bb, &cur_region, &cur_omp_region_idx); gcc_assert (!mer && !cur_region); add_bb_to_loop (bb, afterbb->loop_father); + + edge e; + edge_iterator ei; + FOR_EACH_EDGE (e, ei, bb->preds) + { + cnt += e->count; + freq += EDGE_FREQUENCY (e); + } + bb->count = cnt; + bb->frequency = freq; + tree_guess_outgoing_edge_probabilities (bb); + FOR_EACH_EDGE (e, ei, bb->succs) + e->count = bb->count.apply_probability (e->probability); + bb = bb->next_bb; } return true; |