diff options
author | Jeff Law <law@gcc.gnu.org> | 1993-12-24 12:36:04 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1993-12-24 12:36:04 -0700 |
commit | 443332237923d52fde2cea17df1d57594c1577c2 (patch) | |
tree | fd251ab87fdea9dd87f6686e4d12e22008459dc6 | |
parent | 18bd1bd9bb69c3845491d690954a0e0f57a7da1e (diff) | |
download | gcc-443332237923d52fde2cea17df1d57594c1577c2.zip gcc-443332237923d52fde2cea17df1d57594c1577c2.tar.gz gcc-443332237923d52fde2cea17df1d57594c1577c2.tar.bz2 |
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
-rw-r--r-- | gcc/cse.c | 1 | ||||
-rw-r--r-- | gcc/toplev.c | 4 |
2 files changed, 5 insertions, 0 deletions
@@ -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)); |