diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-20 21:31:32 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-20 21:31:32 +0000 |
commit | 3a0ecac2446ed396f0ab9cbc849a5d87d8a9cada (patch) | |
tree | ba006d95fa2c6cd2214ff0411ebeceffe1b217d0 /gcc/toplev.c | |
parent | 187d4486729c4f0211637898ed8bdbca948f8359 (diff) | |
download | gcc-3a0ecac2446ed396f0ab9cbc849a5d87d8a9cada.tar.gz |
* loop-invariant.c: New file.
* Makefile.in (loop-invariant.o): New.
* cfgloop.h (global_cost_for_size, init_set_costs,
move_loop_invariants): Declare.
* cfgloopanal.c (seq_cost, init_set_costs, global_cost_for_size): New
functions.
(avail_regs, res_regs, small_cost, pres_cost, spill_cost): New
variables.
* common.opt (floop-optimize2, fmove-loop-invariants): New options.
* loop-init.c (loop_optimizer_init): Call init_set_costs.
* passes.c (rest_of_handle_loop2): Call move_loop_invariants.
(rest_of_compilation): Check flag_loop_optimize2.
* toplev.c (process_options): Handle flag_loop_optimize2.
* doc/invoke.texi (-floop-optimize2, -fmove-loop-invariants): Document.
* doc/passes.texi (loop-invariant.c): Document.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83419 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c index b2990bcae77..1ce344cac9c 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1673,6 +1673,19 @@ process_options (void) if (flag_unroll_loops || flag_peel_loops) flag_rerun_cse_after_loop = 1; + /* If explicitly asked to run new loop optimizer, switch off the old + one. */ + if (flag_loop_optimize2) + flag_loop_optimize = 0; + + /* Enable new loop optimizer pass if any of its optimizations is called. */ + if (flag_move_loop_invariants + || flag_unswitch_loops + || flag_peel_loops + || flag_unroll_loops + || flag_branch_on_count_reg) + flag_loop_optimize2 = 1; + if (flag_non_call_exceptions) flag_asynchronous_unwind_tables = 1; if (flag_asynchronous_unwind_tables) |