basic-block.h (remove_predictions_associated_with_edge): Declare.

* basic-block.h (remove_predictions_associated_with_edge): Declare.
	* cfg.c (remove_edge): Use it.
	* predict.c (remove_predictions_associated_with_edge): New function.

From-SVN: r100551
This commit is contained in:
Jan Hubicka 2005-06-03 21:03:29 +02:00 committed by Jan Hubicka
parent 7c9ac5c035
commit 3809e99053
4 changed files with 26 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2005-06-03 Jan Hubicka <jh@suse.cz>
* basic-block.h (remove_predictions_associated_with_edge): Declare.
* cfg.c (remove_edge): Use it.
* predict.c (remove_predictions_associated_with_edge): New function.
2005-06-03 Pat Haugen <pthaugen@us.ibm.com>
* config/rs6000/rs6000.c (rs6000_conditional_register_usage):

View File

@ -869,6 +869,7 @@ extern void tree_predict_edge (edge, enum br_predictor, int);
extern void rtl_predict_edge (edge, enum br_predictor, int);
extern void predict_edge_def (edge, enum br_predictor, enum prediction);
extern void guess_outgoing_edge_probabilities (basic_block);
extern void remove_predictions_associated_with_edge (edge);
/* In flow.c */
extern void init_flow (void);

View File

@ -349,6 +349,7 @@ make_single_succ_edge (basic_block src, basic_block dest, int flags)
void
remove_edge (edge e)
{
remove_predictions_associated_with_edge (e);
execute_on_shrinking_pred (e);
disconnect_src (e);

View File

@ -240,6 +240,24 @@ tree_predict_edge (edge e, enum br_predictor predictor, int probability)
i->edge = e;
}
/* Remove all predictions on given basic block that are attached
to edge E. */
void
remove_predictions_associated_with_edge (edge e)
{
if (e->src->predictions)
{
struct edge_prediction **prediction = &e->src->predictions;
while (*prediction)
{
if ((*prediction)->edge == e)
*prediction = (*prediction)->next;
else
prediction = &((*prediction)->next);
}
}
}
/* Return true when we can store prediction on insn INSN.
At the moment we represent predictions only on conditional
jumps, not at computed jump or other complicated cases. */