From: Jeff Law Date: Fri, 24 Dec 1993 19:36:04 +0000 (-0700) Subject: cse.c (cse_insn): Set "cse_jumps_altered" when collapsing a switch statement into... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=443332237923d52fde2cea17df1d57594c1577c2;p=gcc.git 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 --- diff --git a/gcc/cse.c b/gcc/cse.c index 507cef68c06..2d326cee402 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 10d4f894b06..9031fee75ff 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));