re PR rtl-optimization/5269 (loop unroller fails to pull the right number of copies...
authorDale Johannesen <dalej@apple.com>
Thu, 10 Jan 2002 21:00:43 +0000 (21:00 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 10 Jan 2002 21:00:43 +0000 (13:00 -0800)
        PR optimization/5269
        * unroll.c (precondition_loop_p): Make *increment be the correct
        sign when n_iterations known, to avoid confusing caller.

From-SVN: r48752

gcc/ChangeLog
gcc/unroll.c

index 76fcfba..fbabcae 100644 (file)
@@ -1,3 +1,9 @@
+2002-01-10  Dale Johannesen  <dalej@apple.com>
+
+       PR optimization/5269
+       * unroll.c (precondition_loop_p): Make *increment be the correct
+       sign when n_iterations known, to avoid confusing caller.
+
 2002-01-10  Kazu Hirata  <kazu@hxi.com>
 
        * doc/extend.texi (deprecated): Fix a typo.
index 047e983..df02b7c 100644 (file)
@@ -1392,9 +1392,18 @@ precondition_loop_p (loop, initial_value, final_value, increment, mode)
 
   if (loop_info->n_iterations > 0)
     {
-      *initial_value = const0_rtx;
-      *increment = const1_rtx;
-      *final_value = GEN_INT (loop_info->n_iterations);
+      if (INTVAL (loop_info->increment) > 0)
+       {
+         *initial_value = const0_rtx;
+         *increment = const1_rtx;
+         *final_value = GEN_INT (loop_info->n_iterations);
+       }
+      else
+       {
+         *initial_value = GEN_INT (loop_info->n_iterations);
+         *increment = constm1_rtx;
+         *final_value = const0_rtx;
+       }
       *mode = word_mode;
 
       if (loop_dump_stream)