predict.c (tree_predict_edge): Do not predict entry edge and single succestor edge.
authorJan Hubicka <jh@suse.cz>
Sat, 4 Jun 2005 11:00:57 +0000 (13:00 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sat, 4 Jun 2005 11:00:57 +0000 (11:00 +0000)
* predict.c (tree_predict_edge): Do not predict entry edge and
single succestor edge.

From-SVN: r100581

gcc/ChangeLog
gcc/predict.c

index d32b69e69c4c8a5ed9e9dffb09d9b47d1a1cd273..267231db008a771d0fa0e070197d8c08da4009d9 100644 (file)
@@ -1,3 +1,8 @@
+2005-06-04  Jan Hubicka  <jh@suse.cz>
+
+       * predict.c (tree_predict_edge): Do not predict entry edge and
+       single succestor edge.
+
 2005-06-04  Joseph S. Myers  <joseph@codesourcery.com>
 
        PR c/21873
index 8ca44f69093028d5114f767282fab72c13a5e0ff..22468ace1112748635e0520da30785cb6d8a655a 100644 (file)
@@ -231,13 +231,17 @@ rtl_predict_edge (edge e, enum br_predictor predictor, int probability)
 void
 tree_predict_edge (edge e, enum br_predictor predictor, int probability)
 {
-  struct edge_prediction *i = ggc_alloc (sizeof (struct edge_prediction));
+  if ((e->src != ENTRY_BLOCK_PTR && EDGE_COUNT (e->src->succs) > 1)
+      && flag_guess_branch_prob)
+    {
+      struct edge_prediction *i = ggc_alloc (sizeof (struct edge_prediction));
 
-  i->next = e->src->predictions;
-  e->src->predictions = i;
-  i->probability = probability;
-  i->predictor = predictor;
-  i->edge = e;
+      i->next = e->src->predictions;
+      e->src->predictions = i;
+      i->probability = probability;
+      i->predictor = predictor;
+      i->edge = e;
+    }
 }
 
 /* Remove all predictions on given basic block that are attached