aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-07-21 17:26:03 -0700
committerRichard Henderson <rth@gcc.gnu.org>2002-07-21 17:26:03 -0700
commit5e1afb115ee0038eb3474176d8c56c2460a4274e (patch)
tree2ff7eb08105c0df70c8ebbd19873fcb13b68513d /gcc
parentc67a1cf6a842249a064d479b455321e6663e4708 (diff)
downloadgcc-5e1afb115ee0038eb3474176d8c56c2460a4274e.zip
gcc-5e1afb115ee0038eb3474176d8c56c2460a4274e.tar.gz
gcc-5e1afb115ee0038eb3474176d8c56c2460a4274e.tar.bz2
loop.h (LOOP_AUTO_UNROLL): Rename from LOOP_FIRST_PASS.
* loop.h (LOOP_AUTO_UNROLL): Rename from LOOP_FIRST_PASS. * loop.c (strength_reduce): Update. * toplev.c (rest_of_compilation): Do unrolling in the first loop pass, not the second. From-SVN: r55634
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/loop.c2
-rw-r--r--gcc/loop.h2
-rw-r--r--gcc/toplev.c12
4 files changed, 16 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a852ef7..d1959cc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2002-07-21 Richard Henderson <rth@redhat.com>
+ * loop.h (LOOP_AUTO_UNROLL): Rename from LOOP_FIRST_PASS.
+ * loop.c (strength_reduce): Update.
+ * toplev.c (rest_of_compilation): Do unrolling in the first
+ loop pass, not the second.
+
+2002-07-21 Richard Henderson <rth@redhat.com>
+
* emit-rtl.c (set_mem_attributes): Preserve indirection of PARM_DECL
when flag_argument_noalias == 2.
* alias.c (nonoverlapping_memrefs_p): Handle that.
diff --git a/gcc/loop.c b/gcc/loop.c
index c943c6d..1b8afd5 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -5320,7 +5320,7 @@ strength_reduce (loop, flags)
collected. Always unroll loops that would be as small or smaller
unrolled than when rolled. */
if ((flags & LOOP_UNROLL)
- || (!(flags & LOOP_FIRST_PASS)
+ || ((flags & LOOP_AUTO_UNROLL)
&& loop_info->n_iterations > 0
&& unrolled_insn_copies <= insn_count))
unroll_loop (loop, insn_count, 1);
diff --git a/gcc/loop.h b/gcc/loop.h
index 631352f..13b6293 100644
--- a/gcc/loop.h
+++ b/gcc/loop.h
@@ -28,7 +28,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#define LOOP_UNROLL 1
#define LOOP_BCT 2
#define LOOP_PREFETCH 4
-#define LOOP_FIRST_PASS 8
+#define LOOP_AUTO_UNROLL 8
/* Get the loop info pointer of a loop. */
#define LOOP_INFO(LOOP) ((struct loop_info *) (LOOP)->aux)
diff --git a/gcc/toplev.c b/gcc/toplev.c
index f9ebc17..cfb21e4 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1,4 +1,3 @@
-
/* Top level of GNU C compiler
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002 Free Software Foundation, Inc.
@@ -2878,6 +2877,8 @@ rest_of_compilation (decl)
if (optimize > 0 && flag_loop_optimize)
{
+ int do_unroll, do_prefetch;
+
timevar_push (TV_LOOP);
delete_dead_jumptables ();
cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
@@ -2885,12 +2886,15 @@ rest_of_compilation (decl)
/* CFG is no longer maintained up-to-date. */
free_bb_for_insn ();
+ do_unroll = flag_unroll_loops ? LOOP_UNROLL : LOOP_AUTO_UNROLL;
+ do_prefetch = flag_prefetch_loop_arrays ? LOOP_PREFETCH : 0;
if (flag_rerun_loop_opt)
{
cleanup_barriers ();
/* We only want to perform unrolling once. */
- loop_optimize (insns, rtl_dump_file, LOOP_FIRST_PASS);
+ loop_optimize (insns, rtl_dump_file, do_unroll);
+ do_unroll = 0;
/* The first call to loop_optimize makes some instructions
trivially dead. We delete those instructions now in the
@@ -2903,9 +2907,7 @@ rest_of_compilation (decl)
reg_scan (insns, max_reg_num (), 1);
}
cleanup_barriers ();
- loop_optimize (insns, rtl_dump_file,
- (flag_unroll_loops ? LOOP_UNROLL : 0) | LOOP_BCT
- | (flag_prefetch_loop_arrays ? LOOP_PREFETCH : 0));
+ loop_optimize (insns, rtl_dump_file, do_unroll | LOOP_BCT | do_prefetch);
/* Loop can create trivially dead instructions. */
delete_trivially_dead_insns (insns, max_reg_num ());