+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.
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);
fputc ('\n', dump_file);
fputc ('\n', dump_file);
}
- if (dump_file && (dump_flags & TDF_DETAILS))
- report_predictor_hitrates ();
free_aux_for_blocks ();
}
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