Commit f3c5ecc2 by Martin Liska Committed by Martin Liska

Fix first match heuristics

	* predict.c (combine_predictions_for_bb): Fix first match in
	cases where a first predictor contains more than one occurence
	in list of predictors.  Take the best value in such case.
	* gcc.dg/predict-9.c: New test.

From-SVN: r237036
parent a91807c5
2016-06-02 Martin Liska <mliska@suse.cz>
* predict.c (combine_predictions_for_bb): Fix first match in
cases where a first predictor contains more than one occurence
in list of predictors. Take the best value in such case.
2016-06-02 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR rtl-optimization/71295
......
......@@ -939,7 +939,7 @@ combine_predictions_for_bb (basic_block bb, bool dry_run)
pred2; pred2 = pred2->ep_next)
if (pred2 != pred && pred2->ep_predictor == pred->ep_predictor)
{
int probability2 = pred->ep_probability;
int probability2 = pred2->ep_probability;
if (pred2->ep_edge != first)
probability2 = REG_BR_PROB_BASE - probability2;
......
2016-06-02 Martin Liska <mliska@suse.cz>
* gcc.dg/predict-9.c: New test.
2016-06-02 Jakub Jelinek <jakub@redhat.com>
* lib/gcc-dg.exp (cleanup-after-saved-dg-test): Add missing
......
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-profile_estimate" } */
extern int global;
extern int global2;
extern int global3;
void foo (int base)
{
int i;
while (global < 10)
{
if(global || global2 || global3)
return;
for (i = base; i < 10; i++)
if (i > 123)
return;
}
}
/* { dg-final { scan-tree-dump-times "first match heuristics: 2.0%" 4 "profile_estimate"} } */
/* { dg-final { scan-tree-dump-times "first match heuristics: 4.5%" 0 "profile_estimate"} } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment