cse.c (cse_insn): Set "cse_jumps_altered" when collapsing a switch statement into...
authorJeff Law <law@gcc.gnu.org>
Fri, 24 Dec 1993 19:36:04 +0000 (12:36 -0700)
committerJeff Law <law@gcc.gnu.org>
Fri, 24 Dec 1993 19:36:04 +0000 (12:36 -0700)
        * cse.c (cse_insn): Set "cse_jumps_altered" when collapsing
        a switch statement into an unconditional jump.
        * toplev.c (rest_of_compilation): Rerun jump_optimize
        before the second CSE pass.

From-SVN: r6305

gcc/cse.c
gcc/toplev.c

index 507cef6..2d326ce 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -6447,6 +6447,7 @@ cse_insn (insn, in_libcall_block)
                trial = gen_rtx (LABEL_REF, Pmode, get_label_after (trial));
 
              SET_SRC (sets[i].rtl) = trial;
+             cse_jumps_altered = 1;
              break;
            }
           
index 10d4f89..9031fee 100644 (file)
@@ -2559,7 +2559,11 @@ rest_of_compilation (decl)
 
   if (optimize > 0 && flag_rerun_cse_after_loop)
     {
+      /* Running another jump optimization pass before the second
+        cse pass sometimes simplifies the RTL enough to allow
+        the second CSE pass to do a better job.  */
       TIMEVAR (cse2_time, reg_scan (insns, max_reg_num (), 0));
+      TIMEVAR (jump_time, jump_optimize (insns, 0, 0, 1));
 
       TIMEVAR (cse2_time, tem = cse_main (insns, max_reg_num (),
                                          1, cse2_dump_file));