aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-04-02 23:56:47 -0800
committerRichard Henderson <rth@gcc.gnu.org>2002-04-02 23:56:47 -0800
commit6584b4aa8bf0515432f520c3ac8379e3bd70e8d2 (patch)
tree20695b9c1c06a51bef949e2e27c2c1bc4213eb58 /gcc/loop.c
parent0acf409fdc1266c03caf70c778e8a79ce2f59261 (diff)
downloadgcc-6584b4aa8bf0515432f520c3ac8379e3bd70e8d2.zip
gcc-6584b4aa8bf0515432f520c3ac8379e3bd70e8d2.tar.gz
gcc-6584b4aa8bf0515432f520c3ac8379e3bd70e8d2.tar.bz2
re PR rtl-optimization/4311 (unrolling loops creates non-ending loop)
PR opt/4311 * loop.h (LOOP_FIRST_PASS): New. * loop.c (strength_reduce): Mind it when deciding to unroll. * toplev.c (rest_of_compilation): Set it. From-SVN: r51798
Diffstat (limited to 'gcc/loop.c')
-rw-r--r--gcc/loop.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index 99281d0..b51b2a8 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -5214,7 +5214,8 @@ strength_reduce (loop, flags)
collected. Always unroll loops that would be as small or smaller
unrolled than when rolled. */
if ((flags & LOOP_UNROLL)
- || (loop_info->n_iterations > 0
+ || (!(flags & LOOP_FIRST_PASS)
+ && loop_info->n_iterations > 0
&& unrolled_insn_copies <= insn_count))
unroll_loop (loop, insn_count, 1);