aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2008-11-03 16:17:33 +0000
committerSebastian Pop <spop@gcc.gnu.org>2008-11-03 16:17:33 +0000
commitede7cba0dd81777994a1d22b582ddb785b949224 (patch)
tree0945fff32b773460231721e9efc16a21d46d6f8c /gcc
parentf4c59f4fd20bf116aa94e1efdd131746b1f3daa6 (diff)
downloadgcc-ede7cba0dd81777994a1d22b582ddb785b949224.zip
gcc-ede7cba0dd81777994a1d22b582ddb785b949224.tar.gz
gcc-ede7cba0dd81777994a1d22b582ddb785b949224.tar.bz2
cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and EDGE_IRREDUCIBLE_LOOP.
2008-11-03 Sebastian Pop <sebastian.pop@amd.com> * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and EDGE_IRREDUCIBLE_LOOP. From-SVN: r141549
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cfghooks.c11
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 32ebb5d..5d9bfaa 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c
index 0897b0d..10c04a8 100644
--- a/gcc/cfghooks.c
+++ b/gcc/cfghooks.c
@@ -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. */