profile.c (compute_branch_probabilities): Do not report hitrates here.
authorJan Hubicka <hubicka@ucw.cz>
Sat, 28 May 2016 16:20:06 +0000 (18:20 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sat, 28 May 2016 16:20:06 +0000 (16:20 +0000)
* profile.c (compute_branch_probabilities): Do not report hitrates
here.
(branch_prob): Report hitrates here.
* predict.c (gimple_predict_edge): Do not assert profile status;
fix formatting issues.

From-SVN: r236849

gcc/ChangeLog
gcc/predict.c
gcc/profile.c

index 3a75b80..3856745 100644 (file)
@@ -1,5 +1,13 @@
 2016-05-27  Jan Hubicka  <hubicka@ucw.cz>
 
+       * profile.c (compute_branch_probabilities): Do not report hitrates
+       here.
+       (branch_prob): Report hitrates here.
+       * predict.c (gimple_predict_edge): Do not assert profile status;
+       fix formatting issues.
+
+2016-05-27  Jan Hubicka  <hubicka@ucw.cz>
+
        * predict.c (edge_predicted_by_p): New function.
        (predict_paths_for_bb): Do not put multiple predictions of the same type
        on one edge.
index 22ec8a0..3743b01 100644 (file)
@@ -593,10 +593,10 @@ rtl_predict_edge (edge e, enum br_predictor predictor, int probability)
 void
 gimple_predict_edge (edge e, enum br_predictor predictor, int probability)
 {
-  gcc_assert (profile_status_for_fn (cfun) != PROFILE_GUESSED);
-  if ((e->src != ENTRY_BLOCK_PTR_FOR_FN (cfun) && EDGE_COUNT (e->src->succs) >
-       1)
-      && flag_guess_branch_prob && optimize)
+  if (e->src != ENTRY_BLOCK_PTR_FOR_FN (cfun)
+      && EDGE_COUNT (e->src->succs) > 1
+      && flag_guess_branch_prob
+      && optimize)
     {
       struct edge_prediction *i = XNEW (struct edge_prediction);
       edge_prediction *&preds = bb_predictions->get_or_insert (e->src);
index 39c81d4..007379b 100644 (file)
@@ -845,8 +845,6 @@ compute_branch_probabilities (unsigned cfg_checksum, unsigned lineno_checksum)
       fputc ('\n', dump_file);
       fputc ('\n', dump_file);
     }
-  if (dump_file && (dump_flags & TDF_DETAILS))
-    report_predictor_hitrates ();
 
   free_aux_for_blocks ();
 }
@@ -1331,6 +1329,8 @@ 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 ();
 }
 \f
 /* Union find algorithm implementation for the basic blocks using