cfgloop.c (flow_loops_find): Fix handling of abnormal edges.

2003-01-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.c (flow_loops_find): Fix handling of abnormal edges.

From-SVN: r61393
This commit is contained in:
Zdenek Dvorak 2003-01-16 16:49:20 +01:00 committed by Zdenek Dvorak
parent c1b50e4978
commit 16f2b86aa8
2 changed files with 13 additions and 8 deletions

View File

@ -1,3 +1,7 @@
2003-01-16 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
* cfgloop.c (flow_loops_find): Fix handling of abnormal edges.
2003-01-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* dbxout.c (lastfile, cwd): Fix `unused' warning.

View File

@ -804,19 +804,20 @@ flow_loops_find (loops, flags)
header->loop_depth = 0;
/* If we have an abnormal predecessor, do not consider the
loop (not worth the problems). */
for (e = header->pred; e; e = e->pred_next)
if (e->flags & EDGE_ABNORMAL)
break;
if (e)
continue;
for (e = header->pred; e; e = e->pred_next)
{
basic_block latch = e->src;
if (e->flags & EDGE_ABNORMAL)
{
if (more_latches)
{
RESET_BIT (headers, header->index);
num_loops--;
}
break;
}
abort ();
/* Look for back edges where a predecessor is dominated
by this block. A natural loop has a single entry