]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
cfgcleanup.c (try_forward_edges): Avoid infinite loop at infinite threaded loop.
authorJan Hubicka <jh@suse.cz>
Mon, 14 Jan 2002 19:21:21 +0000 (20:21 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Mon, 14 Jan 2002 19:21:21 +0000 (19:21 +0000)
* cfgcleanup.c (try_forward_edges): Avoid infinite loop at infinite
threaded loop.

From-SVN: r48837

gcc/ChangeLog
gcc/cfgcleanup.c
gcc/toplev.c

index bed8af0e05045d1990ffcccffcdb3187ad26158a..e95275f27a384e4b11a3c39719aa4899ed69b753 100644 (file)
@@ -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.
index 5015c81494129bf133bd64bd2b8278bada628cdb..13c5a8e1352bbc71b8f8f60863de42dc0997f408 100644 (file)
@@ -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.  */
index 5d58ead1fd2311fda26178d606025468b9da95ef..e8b6102d8d6c02ad0d49335f06e68d4c479fbf18 100644 (file)
@@ -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;