OSDN Git Service

2008-11-03 Sebastian Pop <sebastian.pop@amd.com>
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Nov 2008 16:17:33 +0000 (16:17 +0000)
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Nov 2008 16:17:33 +0000 (16:17 +0000)
* cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
EDGE_IRREDUCIBLE_LOOP.

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

gcc/ChangeLog
gcc/cfghooks.c

index 32ebb5d..5d9bfaa 100644 (file)
@@ -1,3 +1,8 @@
+2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
+       EDGE_IRREDUCIBLE_LOOP.
+
 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
 
        * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
 
        * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
index 0897b0d..10c04a8 100644 (file)
@@ -425,6 +425,7 @@ edge
 split_block (basic_block bb, void *i)
 {
   basic_block new_bb;
 split_block (basic_block bb, void *i)
 {
   basic_block new_bb;
+  edge res;
 
   if (!cfg_hooks->split_block)
     internal_error ("%s does not support split_block", cfg_hooks->name);
 
   if (!cfg_hooks->split_block)
     internal_error ("%s does not support split_block", cfg_hooks->name);
@@ -450,7 +451,15 @@ split_block (basic_block bb, void *i)
        bb->loop_father->latch = new_bb;
     }
 
        bb->loop_father->latch = new_bb;
     }
 
-  return make_single_succ_edge (bb, new_bb, EDGE_FALLTHRU);
+  res = make_single_succ_edge (bb, new_bb, EDGE_FALLTHRU);
+
+  if (bb->flags & BB_IRREDUCIBLE_LOOP)
+    {
+      new_bb->flags |= BB_IRREDUCIBLE_LOOP;
+      res->flags |= EDGE_IRREDUCIBLE_LOOP;
+    }
+
+  return res;
 }
 
 /* Splits block BB just after labels.  The newly created edge is returned.  */
 }
 
 /* Splits block BB just after labels.  The newly created edge is returned.  */