profile.c (compute_branch_probabilities): Use REG_BR_PROB notes when re-constructing profile previously invalidated by loop.

* profile.c (compute_branch_probabilities): Use REG_BR_PROB notes
	when re-constructing profile previously invalidated by loop.

From-SVN: r88115
This commit is contained in:
Jan Hubicka 2004-09-26 01:21:07 +02:00 committed by Jan Hubicka
parent ffe2e220bd
commit 5db0241f0c
2 changed files with 20 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2004-09-26 Jan Hubicka <jh@suse.cz>
* profile.c (compute_branch_probabilities): Use REG_BR_PROB notes
when re-constructing profile previously invalidated by loop.
2004-09-25 Dale Johannesen <dalej@apple.com>
* tree-gimple.c: Move GIMPLE definition...

View File

@ -557,12 +557,24 @@ compute_branch_probabilities (void)
num_branches++;
}
}
/* Otherwise distribute the probabilities evenly so we get sane
sum. Use simple heuristics that if there are normal edges,
/* Otherwise try to preserve the existing REG_BR_PROB probabilities
tree based profile guessing put into code. */
else if (profile_status == PROFILE_ABSENT
&& !ir_type ()
&& bb->succ && bb->succ->succ_next
&& (note = find_reg_note (BB_END (bb), REG_BR_PROB, 0)))
{
int prob = INTVAL (XEXP (note, 0));
BRANCH_EDGE (bb)->probability = prob;
FALLTHRU_EDGE (bb)->probability = REG_BR_PROB_BASE - prob;
}
/* As a last resolt, distribute the probabilities evenly.
Use simple heuristics that if there are normal edges,
give all abnormals frequency of 0, otherwise distribute the
frequency over abnormals (this is the case of noreturn
calls). */
else
else if (profile_status == PROFILE_ABSENT)
{
int total = 0;