diff options
author | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-27 19:54:42 +0000 |
---|---|---|
committer | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-27 19:54:42 +0000 |
commit | 3f18719cda960d9d45c9343acb33e7d71ec8d689 (patch) | |
tree | 815da728ec01e62f4a77f8c3af52f31fbe745bd3 /gcc/predict.c | |
parent | 55e7bb5cc5290004556654cd1a4b310229835883 (diff) | |
download | gcc-3f18719cda960d9d45c9343acb33e7d71ec8d689.tar.gz |
* coverage.c (get_coverage_counts): Give a different message
if flag_guess_branch_prob is set.
* predict.c (counts_to_freqs): Return an int.
(estimate_bb_frequencies): If counts_to_freqs returns zero,
calculate estimates.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76741 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/predict.c')
-rw-r--r-- | gcc/predict.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gcc/predict.c b/gcc/predict.c index f2b4068df1a..50580bd08ec 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -71,7 +71,7 @@ static void dump_prediction (enum br_predictor, int, basic_block, int); static void estimate_loops_at_level (struct loop *loop); static void propagate_freq (struct loop *); static void estimate_bb_frequencies (struct loops *); -static void counts_to_freqs (void); +static int counts_to_freqs (void); static void process_note_predictions (basic_block, int *); static void process_note_prediction (basic_block, int *, int, int); static bool last_basic_block_p (basic_block); @@ -1048,19 +1048,22 @@ estimate_loops_at_level (struct loop *first_loop) } } -/* Convert counts measured by profile driven feedback to frequencies. */ +/* Convert counts measured by profile driven feedback to frequencies. + Return nonzero iff there was any nonzero execution count. */ -static void +static int counts_to_freqs (void) { - gcov_type count_max = 1; + gcov_type count_max, true_count_max = 0; basic_block bb; FOR_EACH_BB (bb) - count_max = MAX (bb->count, count_max); + true_count_max = MAX (bb->count, true_count_max); + count_max = MAX (true_count_max, 1); FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb) bb->frequency = (bb->count * BB_FREQ_MAX + count_max / 2) / count_max; + return true_count_max; } /* Return true if function is likely to be expensive, so there is no point to @@ -1113,9 +1116,7 @@ estimate_bb_frequencies (struct loops *loops) basic_block bb; sreal freq_max; - if (flag_branch_probabilities) - counts_to_freqs (); - else + if (!flag_branch_probabilities || !counts_to_freqs ()) { static int real_values_initialized = 0; |