aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorZdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>2004-03-18 17:42:34 +0100
committerZdenek Dvorak <rakdver@gcc.gnu.org>2004-03-18 16:42:34 +0000
commit689ba89dd8da4c7ecad4dab5e98d0d87d4e64383 (patch)
tree245f4992ca85428a919452579f49376b65e76f95 /gcc/passes.c
parent327e5343434d5a2b3e3e10bef5f4be570aed4d0c (diff)
downloadgcc-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.c18
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)