From 443332237923d52fde2cea17df1d57594c1577c2 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 24 Dec 1993 12:36:04 -0700 Subject: [PATCH] cse.c (cse_insn): Set "cse_jumps_altered" when collapsing a switch statement into an... * 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 | 1 + gcc/toplev.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/gcc/cse.c b/gcc/cse.c index 507cef6..2d326ce 100644 --- 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; } diff --git a/gcc/toplev.c b/gcc/toplev.c index 10d4f89..9031fee 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -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)); -- 2.7.4