mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-15 09:39:49 +08:00
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
This commit is contained in:
parent
3afb0820ca
commit
9ef8069a0c
@ -1,3 +1,9 @@
|
||||
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.
|
||||
|
||||
2004-11-18 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.comn>
|
||||
|
||||
* config/m32r/linux.h (TARGET_ASM_FILE_END): Set
|
||||
|
34
gcc/ifcvt.c
34
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,27 +2509,23 @@ find_if_block (struct ce_if_block * ce_info)
|
||||
}
|
||||
}
|
||||
|
||||
/* Count the number of edges the THEN and ELSE blocks have. */
|
||||
then_predecessors = 0;
|
||||
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)
|
||||
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)
|
||||
{
|
||||
if (cur_edge->flags & EDGE_COMPLEX)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
FOR_EACH_EDGE (cur_edge, ei, else_bb->preds)
|
||||
{
|
||||
if (cur_edge->flags & EDGE_COMPLEX)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* The THEN block of an IF-THEN combo must have zero or one successors. */
|
||||
if (EDGE_COUNT (then_bb->succs) > 0
|
||||
|
Loading…
Reference in New Issue
Block a user