+2018-05-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/85964
+ * tracer.c (better_p): Drop initialized count check, we only
+ call the function with initialized counts now.
+ (find_best_successor): Do find a best edge if one
+ has uninitialized count.
+ (find_best_predecessor): Likewise. Do BB frequency check only
+ if count is initialized.
+
2017-05-30 Jackson Woodruff <jackson.woodruff@arm.com>
* config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
static bool
better_p (const_edge e1, const_edge e2)
{
- if (e1->count ().initialized_p () && e2->count ().initialized_p ()
- && ((e1->count () > e2->count ()) || (e1->count () < e2->count ())))
+ if ((e1->count () > e2->count ()) || (e1->count () < e2->count ()))
return e1->count () > e2->count ();
/* This is needed to avoid changes in the decision after
CFG is modified. */
edge_iterator ei;
FOR_EACH_EDGE (e, ei, bb->succs)
- if (!best || better_p (e, best))
- best = e;
+ {
+ if (!e->count ().initialized_p ())
+ return NULL;
+ if (!best || better_p (e, best))
+ best = e;
+ }
if (!best || ignore_bb_p (best->dest))
return NULL;
- if (best->probability.initialized_p ()
- && best->probability.to_reg_br_prob_base () <= probability_cutoff)
+ if (best->probability.to_reg_br_prob_base () <= probability_cutoff)
return NULL;
return best;
}
edge_iterator ei;
FOR_EACH_EDGE (e, ei, bb->preds)
- if (!best || better_p (e, best))
- best = e;
+ {
+ if (!e->count ().initialized_p ())
+ return NULL;
+ if (!best || better_p (e, best))
+ best = e;
+ }
if (!best || ignore_bb_p (best->src))
return NULL;
- if (EDGE_FREQUENCY (best) * REG_BR_PROB_BASE
- < bb->count.to_frequency (cfun) * branch_ratio_cutoff)
+ if (bb->count.initialized_p ()
+ && (best->count ().to_frequency (cfun) * REG_BR_PROB_BASE
+ < bb->count.to_frequency (cfun) * branch_ratio_cutoff))
return NULL;
return best;
}