aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-if-conv.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6a4bac3..657e1e2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2010-05-26 Sebastian Pop <sebastian.pop@amd.com>
+ * tree-if-conv.c (if_convertible_bb_p): Don't handle BBs with more
+ than 2 predecessors or more than 2 successors.
+
+2010-05-26 Sebastian Pop <sebastian.pop@amd.com>
+
* tree-if-conv.c (if_convertible_loop_p): Avoid if-conversion
of loops in which the data dependence analysis fails.
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index f5247a3..0c2e96f 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -460,6 +460,10 @@ if_convertible_bb_p (struct loop *loop, basic_block bb, basic_block exit_bb)
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "----------[%d]-------------\n", bb->index);
+ if (EDGE_COUNT (bb->preds) > 2
+ || EDGE_COUNT (bb->succs) > 2)
+ return false;
+
if (exit_bb)
{
if (bb != loop->latch)