diff options
author | Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | 2004-03-18 17:42:34 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2004-03-18 16:42:34 +0000 |
commit | 689ba89dd8da4c7ecad4dab5e98d0d87d4e64383 (patch) | |
tree | 245f4992ca85428a919452579f49376b65e76f95 /gcc/passes.c | |
parent | 327e5343434d5a2b3e3e10bef5f4be570aed4d0c (diff) | |
download | gcc-689ba89dd8da4c7ecad4dab5e98d0d87d4e64383.zip gcc-689ba89dd8da4c7ecad4dab5e98d0d87d4e64383.tar.gz gcc-689ba89dd8da4c7ecad4dab5e98d0d87d4e64383.tar.bz2 |
doloop.c: Removed.
* doloop.c: Removed.
* loop-doloop.c: New file.
* Makefile.in (doloop.o): Remove.
(loop-doloop.o): New.
* cfgloop.h (get_loop_level, doloop_optimize_loops): Declare.
* cfgloopanal.c (get_loop_level): New function.
* loop-iv.c (iv_number_of_iterations): Handle case when loop
is leaved immediatelly.
* loop.c (strength_reduce): Do not call doloop optimization.
* loop.h (LOOP_BCT): Removed.
* passes.c (rest_of_handle_loop_optimize): Do not use LOOP_BCT.
(rest_of_handle_loop2): Call doloop_optimize_loops.
(rest_of_compilation): Test for optimizations moved to
rest_of_handle_loop2.
From-SVN: r79625
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index c730949..24a2d23 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -1456,7 +1456,7 @@ rest_of_handle_loop_optimize (tree decl, rtx insns) reg_scan (insns, max_reg_num (), 1); } cleanup_barriers (); - loop_optimize (insns, dump_file, do_unroll | LOOP_BCT | do_prefetch); + loop_optimize (insns, dump_file, do_unroll | do_prefetch); /* Loop can create trivially dead instructions. */ delete_trivially_dead_insns (insns, max_reg_num ()); @@ -1476,6 +1476,12 @@ rest_of_handle_loop2 (tree decl, rtx insns) struct loops *loops; basic_block bb; + if (!flag_unswitch_loops + && !flag_peel_loops + && !flag_unroll_loops + && !flag_branch_on_count_reg) + return; + timevar_push (TV_LOOP); open_dump_file (DFI_loop2, decl); if (dump_file) @@ -1498,6 +1504,11 @@ rest_of_handle_loop2 (tree decl, rtx insns) (flag_unroll_loops ? UAP_UNROLL : 0) | (flag_unroll_all_loops ? UAP_UNROLL_ALL : 0)); +#ifdef HAVE_doloop_end + if (flag_branch_on_count_reg && HAVE_doloop_end) + doloop_optimize_loops (loops); +#endif /* HAVE_doloop_end */ + loop_optimizer_finalize (loops, dump_file); } @@ -1776,10 +1787,7 @@ rest_of_compilation (tree decl) if (flag_tracer) rest_of_handle_tracer (decl, insns); - if (optimize > 0 - && (flag_unswitch_loops - || flag_peel_loops - || flag_unroll_loops)) + if (optimize > 0) rest_of_handle_loop2 (decl, insns); if (flag_web) |