diff options
author | kan <kan@FreeBSD.org> | 2003-11-07 02:43:04 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2003-11-07 02:43:04 +0000 |
commit | b09448931ae541a7a60fd1cf0ebac14b627fba69 (patch) | |
tree | 980c917e2cc50183c4d566d9a0f9a1c818e6a6cd /contrib/gcc/cfgloop.c | |
parent | dc227ec3ae9a56f16c472206f51e4838bb53a644 (diff) | |
download | FreeBSD-src-b09448931ae541a7a60fd1cf0ebac14b627fba69.zip FreeBSD-src-b09448931ae541a7a60fd1cf0ebac14b627fba69.tar.gz |
Gcc 3.3.3 20031106.
Diffstat (limited to 'contrib/gcc/cfgloop.c')
-rw-r--r-- | contrib/gcc/cfgloop.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/contrib/gcc/cfgloop.c b/contrib/gcc/cfgloop.c index 0a2829f..c8f7603 100644 --- a/contrib/gcc/cfgloop.c +++ b/contrib/gcc/cfgloop.c @@ -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 |