]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and EDGE_IRREDUCIBLE_LOOP.
authorSebastian Pop <sebastian.pop@amd.com>
Mon, 3 Nov 2008 16:17:33 +0000 (16:17 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Mon, 3 Nov 2008 16:17:33 +0000 (16:17 +0000)
2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>

* cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
EDGE_IRREDUCIBLE_LOOP.

From-SVN: r141549

gcc/ChangeLog
gcc/cfghooks.c

index 32ebb5d077beed376e1a90848d627dd67cae8496..5d9bfaa71bb718bda853377b9549feeb1f1352fa 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
index 0897b0df5653f07a050ee7a3bc04585ec3174a9f..10c04a8b0577baf4ffe4d1be0f790c130245106d 100644 (file)
@@ -425,6 +425,7 @@ edge
 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);
@@ -450,7 +451,15 @@ split_block (basic_block bb, void *i)
        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.  */