diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2004-11-18 14:44:54 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-11-18 06:44:54 -0800 |
commit | 9ef8069a0cc1e5071ca40a5685247b56be5a68d4 (patch) | |
tree | 0b329018e3e258275549531885e8ec4995db2303 /gcc/ifcvt.c | |
parent | 3afb0820ca3031a93a868e06e42d0ad6c00f116b (diff) | |
download | gcc-9ef8069a0cc1e5071ca40a5685247b56be5a68d4.zip gcc-9ef8069a0cc1e5071ca40a5685247b56be5a68d4.tar.gz gcc-9ef8069a0cc1e5071ca40a5685247b56be5a68d4.tar.bz2 |
ifcvt.c (find_if_block): Move the check for the number of edges above the loops checking for complex edges.
2004-11-18 Andrew Pinski <pinskia@physics.uc.edu>
* ifcvt.c (find_if_block): Move the check for the number of edges
above the loops checking for complex edges.
Remove the counting of edges as we use EDGE_COUNT now.
From-SVN: r90865
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r-- | gcc/ifcvt.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 5541311..b2275d0 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -2445,8 +2445,6 @@ find_if_block (struct ce_if_block * ce_info) basic_block then_bb = ce_info->then_bb; basic_block else_bb = ce_info->else_bb; basic_block join_bb = NULL_BLOCK; - int then_predecessors; - int else_predecessors; edge cur_edge; basic_block next; edge_iterator ei; @@ -2511,28 +2509,24 @@ find_if_block (struct ce_if_block * ce_info) } } - /* Count the number of edges the THEN and ELSE blocks have. */ - then_predecessors = 0; + /* The THEN block of an IF-THEN combo must have exactly one predecessor, + other than any || blocks which jump to the THEN block. */ + if ((EDGE_COUNT (then_bb->preds) - ce_info->num_or_or_blocks) != 1) + return FALSE; + + /* The edges of the THEN and ELSE blocks cannot have complex edges. */ FOR_EACH_EDGE (cur_edge, ei, then_bb->preds) { - then_predecessors++; if (cur_edge->flags & EDGE_COMPLEX) return FALSE; } - else_predecessors = 0; FOR_EACH_EDGE (cur_edge, ei, else_bb->preds) { - else_predecessors++; if (cur_edge->flags & EDGE_COMPLEX) return FALSE; } - /* The THEN block of an IF-THEN combo must have exactly one predecessor, - other than any || blocks which jump to the THEN block. */ - if ((then_predecessors - ce_info->num_or_or_blocks) != 1) - return FALSE; - /* The THEN block of an IF-THEN combo must have zero or one successors. */ if (EDGE_COUNT (then_bb->succs) > 0 && (EDGE_COUNT (then_bb->succs) > 1 |