aboutsummaryrefslogtreecommitdiff
path: root/gcc/predict.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2005-06-03 21:03:29 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2005-06-03 19:03:29 +0000
commit3809e99053b8195163c43228e54831704c35484c (patch)
treedccec4c166610579fbf93533c4da6b37727bb546 /gcc/predict.c
parent7c9ac5c0354c587ba84956a4a34584ec2c7648cb (diff)
downloadgcc-3809e99053b8195163c43228e54831704c35484c.zip
gcc-3809e99053b8195163c43228e54831704c35484c.tar.gz
gcc-3809e99053b8195163c43228e54831704c35484c.tar.bz2
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
Diffstat (limited to 'gcc/predict.c')
-rw-r--r--gcc/predict.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/predict.c b/gcc/predict.c
index 25f97f7..8ca44f6 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -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. */