Commit 3809e990 by Jan Hubicka Committed by Jan Hubicka

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
parent 7c9ac5c0
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> 2005-06-03 Pat Haugen <pthaugen@us.ibm.com>
* config/rs6000/rs6000.c (rs6000_conditional_register_usage): * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
......
...@@ -869,6 +869,7 @@ extern void tree_predict_edge (edge, enum br_predictor, int); ...@@ -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 rtl_predict_edge (edge, enum br_predictor, int);
extern void predict_edge_def (edge, enum br_predictor, enum prediction); extern void predict_edge_def (edge, enum br_predictor, enum prediction);
extern void guess_outgoing_edge_probabilities (basic_block); extern void guess_outgoing_edge_probabilities (basic_block);
extern void remove_predictions_associated_with_edge (edge);
/* In flow.c */ /* In flow.c */
extern void init_flow (void); extern void init_flow (void);
......
...@@ -349,6 +349,7 @@ make_single_succ_edge (basic_block src, basic_block dest, int flags) ...@@ -349,6 +349,7 @@ make_single_succ_edge (basic_block src, basic_block dest, int flags)
void void
remove_edge (edge e) remove_edge (edge e)
{ {
remove_predictions_associated_with_edge (e);
execute_on_shrinking_pred (e); execute_on_shrinking_pred (e);
disconnect_src (e); disconnect_src (e);
......
...@@ -240,6 +240,24 @@ tree_predict_edge (edge e, enum br_predictor predictor, int probability) ...@@ -240,6 +240,24 @@ tree_predict_edge (edge e, enum br_predictor predictor, int probability)
i->edge = e; 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. /* Return true when we can store prediction on insn INSN.
At the moment we represent predictions only on conditional At the moment we represent predictions only on conditional
jumps, not at computed jump or other complicated cases. */ jumps, not at computed jump or other complicated cases. */
......
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