diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-if-conv.c | 4 |
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) |