2013-05-03 Teresa Johnson <tejohnson@google.com>
authortejohnson <tejohnson@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 May 2013 16:48:24 +0000 (16:48 +0000)
committertejohnson <tejohnson@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 May 2013 16:48:24 +0000 (16:48 +0000)
PR bootstrap/57154
* sched-rgn.c (compute_dom_prob_ps): Ensure accumulated probabilities
do not exceed REG_BR_PROB_BASE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198584 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/sched-rgn.c

index e0ddef9..616db86 100644 (file)
@@ -1,3 +1,9 @@
+2013-05-03  Teresa Johnson  <tejohnson@google.com>
+
+       PR bootstrap/57154
+       * sched-rgn.c (compute_dom_prob_ps): Ensure accumulated probabilities
+       do not exceed REG_BR_PROB_BASE.
+
 2013-05-03  Jeff Law  <law@redhat.com>
 
        PR tree-optimization/57144
index 3f5b4ba..2c971e2 100644 (file)
@@ -1442,6 +1442,12 @@ compute_dom_prob_ps (int bb)
        bitmap_set_bit (pot_split[bb], EDGE_TO_BIT (out_edge));
 
       prob[bb] += combine_probabilities (prob[pred_bb], in_edge->probability);
+      // The rounding divide in combine_probabilities can result in an extra
+      // probability increment propagating along 50-50 edges. Eventually when
+      // the edges re-merge, the accumulated probability can go slightly above
+      // REG_BR_PROB_BASE.
+      if (prob[bb] > REG_BR_PROB_BASE)
+        prob[bb] = REG_BR_PROB_BASE;
     }
 
   bitmap_set_bit (dom[bb], bb);