From: Jan Hubicka Date: Fri, 3 Jun 2016 17:00:19 +0000 (+0200) Subject: tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid use of profile... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=641762ae264c86492d869d55559644e87ed36d46;p=gcc.git tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid use of profile unless profile status is PROFILE_READ. * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid use of profile unless profile status is PROFILE_READ. * profile.c (compute_branch_probabilities): Set profile status only after reporting predictor hitrates. From-SVN: r237076 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d52fa3d1ffe..068b874dd17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-06-03 Jan Hubicka + + * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid + use of profile unless profile status is PROFILE_READ. + * profile.c (compute_branch_probabilities): Set profile status + only after reporting predictor hitrates. + 2016-06-03 Joseph Myers PR target/71276 diff --git a/gcc/profile.c b/gcc/profile.c index 007379baa13..9925bb568c6 100644 --- a/gcc/profile.c +++ b/gcc/profile.c @@ -826,8 +826,6 @@ compute_branch_probabilities (unsigned cfg_checksum, unsigned lineno_checksum) } } counts_to_freqs (); - profile_status_for_fn (cfun) = PROFILE_READ; - compute_function_frequency (); if (dump_file) { @@ -1329,8 +1327,13 @@ branch_prob (void) values.release (); free_edge_list (el); coverage_end_function (lineno_checksum, cfg_checksum); - if (dump_file && (dump_flags & TDF_DETAILS)) - report_predictor_hitrates (); + if (flag_branch_probabilities && profile_info) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + report_predictor_hitrates (); + profile_status_for_fn (cfun) = PROFILE_READ; + compute_function_frequency (); + } } /* Union find algorithm implementation for the basic blocks using diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index e70e0a7e99a..78040364a97 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -3757,10 +3757,12 @@ estimate_numbers_of_iterations_loop (struct loop *loop) maybe_lower_iteration_bound (loop); /* If we have a measured profile, use it to estimate the number of - iterations. */ - if (loop->header->count != 0) + iterations. Explicitly check for profile status so we do not report + wrong prediction hitrates for guessed loop iterations heuristics. */ + if (loop->header->count != 0 + && profile_status_for_fn (cfun) >= PROFILE_READ) { - gcov_type nit = expected_loop_iterations_unbounded (loop) + 1; + gcov_type nit = expected_loop_iterations_unbounded (loop); bound = gcov_type_to_wide_int (nit); record_niter_bound (loop, bound, true, false); }