diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cfgcleanup.c | 5 | ||||
-rw-r--r-- | gcc/toplev.c | 1 |
3 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bed8af0..e95275f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Mon Jan 14 20:18:19 CET 2002 Jan Hubicka <jh@suse.cz> + + * cfgcleanup.c (try_forward_edges): Avoid infinite loop at infinite + threaded loop. + 2002-01-14 Tom Rix <trix@redhat.com> * config/rs6000/rs6000.md: Fix typo with sradi. diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 5015c81..13c5a8e 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -426,7 +426,10 @@ try_forward_edges (mode, b) if (threaded_edges[i] == t) break; if (i < nthreaded_edges) - break; + { + counter = n_basic_blocks; + break; + } } /* Detect an infinite loop across the start block. */ diff --git a/gcc/toplev.c b/gcc/toplev.c index 5d58ead..e8b6102 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2810,6 +2810,7 @@ rest_of_compilation (decl) find_basic_blocks (insns, max_reg_num (), rtl_dump_file); cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP); tem = gcse_main (insns, rtl_dump_file); + rebuild_jump_labels (insns); save_csb = flag_cse_skip_blocks; save_cfj = flag_cse_follow_jumps; |