diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vect-loop-manip.c | 10 |
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 93d4cb3..872ca08 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2017-11-14 Jan Hubicka <hubicka@ucw.cz> + * tree-vect-loop-manip.c (vect_do_peeling): Do not use + scale_bbs_frequencies_int. + +2017-11-14 Jan Hubicka <hubicka@ucw.cz> + * final.c (compute_alignments): Use counts rather than frequencies. 2017-11-14 Jan Hubicka <hubicka@ucw.cz> diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c index be34310..1df591e 100644 --- a/gcc/tree-vect-loop-manip.c +++ b/gcc/tree-vect-loop-manip.c @@ -1844,14 +1844,16 @@ vect_do_peeling (loop_vec_info loop_vinfo, tree niters, tree nitersm1, /* Simply propagate profile info from guard_bb to guard_to which is a merge point of control flow. */ guard_to->count = guard_bb->count; + /* Scale probability of epilog loop back. FIXME: We should avoid scaling down and back up. Profile may get lost if we scale down to 0. */ - int scale_up = REG_BR_PROB_BASE * REG_BR_PROB_BASE - / prob_vector.to_reg_br_prob_base (); basic_block *bbs = get_loop_body (epilog); - scale_bbs_frequencies_int (bbs, epilog->num_nodes, scale_up, - REG_BR_PROB_BASE); + for (unsigned int i = 0; i < epilog->num_nodes; i++) + bbs[i]->count = bbs[i]->count.apply_scale + (bbs[i]->count, + bbs[i]->count.apply_probability + (prob_vector)); free (bbs); } |