OSDN Git Service

* cfghooks.c (make_forwarder_block): Decrement count on fallthru edge
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Jun 2004 04:09:46 +0000 (04:09 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Jun 2004 04:09:46 +0000 (04:09 +0000)
        when redirecting back edges.

        * cfghooks.c (split_block): Call make_single_succ_edge so that edge
        count/probability are set correctly.

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

gcc/ChangeLog
gcc/cfghooks.c

index ecd0f06..70fe4ee 100644 (file)
@@ -1,3 +1,11 @@
+2004-06-22  Pat Haugen  <pthaugen@us.ibm.com>
+
+       * cfghooks.c (make_forwarder_block): Decrement count on fallthru edge
+       when redirecting back edges.
+
+       * cfghooks.c (split_block): Call make_single_succ_edge so that edge
+       count/probability are set correctly.
+
 2004-06-22  Richard Henderson  <rth@redhat.com>
 
        * c-typeck.c (emit_side_effect_warnings): Ignore error marks.
index 29f5dfd..bd67a21 100644 (file)
@@ -321,7 +321,7 @@ split_block (basic_block bb, void *i)
       set_immediate_dominator (CDI_DOMINATORS, new_bb, bb);
     }
 
-  return make_edge (bb, new_bb, EDGE_FALLTHRU);
+  return make_single_succ_edge (bb, new_bb, EDGE_FALLTHRU);
 }
 
 /* Splits block BB just after labels.  The newly created edge is returned.  */
@@ -566,6 +566,9 @@ make_forwarder_block (basic_block bb, bool (*redirect_edge_p) (edge),
        dummy->frequency = 0;
       if (dummy->count < 0)
        dummy->count = 0;
+      fallthru->count -= e->count;
+      if (fallthru->count < 0)
+       fallthru->count = 0;
 
       jump = redirect_edge_and_branch_force (e, bb);
       if (jump)