This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: optimization/7120: Run once loop should *always* be unrolled
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: davem at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org, nobody at gcc dot gnu dot org, rth at twiddle dot net, rusty at rustcorp dot com dot au, gcc-gnats at gcc dot gnu dot org
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 26 Jun 2002 12:54:56 +0930
- Subject: Re: optimization/7120: Run once loop should *always* be unrolled
- References: <20020625162132.31801.qmail@sources.redhat.com>
On Tue, Jun 25, 2002 at 04:21:32PM -0000, davem@gcc.gnu.org wrote:
> Synopsis: Run once loop should *always* be unrolled
This patch cures the problem. bootstrap i686-linux in progress.
* unroll.c (loop_iterations): Handle EQ loops.
Index: gcc/unroll.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/unroll.c,v
retrieving revision 1.168
diff -u -p -r1.168 unroll.c
--- gcc/unroll.c 15 Jun 2002 01:10:49 -0000 1.168
+++ gcc/unroll.c 26 Jun 2002 03:19:38 -0000
@@ -3941,12 +3941,6 @@ loop_iterations (loop)
}
return 0;
}
- else if (comparison_code == EQ)
- {
- if (loop_dump_stream)
- fprintf (loop_dump_stream, "Loop iterations: EQ comparison loop.\n");
- return 0;
- }
else if (GET_CODE (final_value) != CONST_INT)
{
if (loop_dump_stream)
@@ -3957,6 +3951,15 @@ loop_iterations (loop)
fprintf (loop_dump_stream, ".\n");
}
return 0;
+ }
+ else if (comparison_code == EQ)
+ {
+ if (loop_dump_stream)
+ fprintf (loop_dump_stream, "Loop iterations: EQ comparison loop.\n");
+ if (INTVAL (increment) == 0)
+ return 0;
+ loop_info->n_iterations = 1;
+ return loop_info->n_iterations;
}
/* Final_larger is 1 if final larger, 0 if they are equal, otherwise -1. */
--
Alan Modra
IBM OzLabs - Linux Technology Centre