Feb 8 14:56:03 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Sun, 8 Feb 1998 14:12:00 +0000 (14:12 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Sun, 8 Feb 1998 14:12:00 +0000 (09:12 -0500)
Feb  8 14:56:03 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
        * loop.c (strength_reduce): When placing increment for auto-inc
        case, do comparison in loop order.

From-SVN: r17781

gcc/ChangeLog
gcc/loop.c

index 68c777d..e27249e 100644 (file)
@@ -1,3 +1,8 @@
+Sun Feb  8 14:56:03 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * loop.c (strength_reduce): When placing increment for auto-inc
+       case, do comparison in loop order.
+       
 Sun Feb  8 13:21:38 1998  John Carr  <jfc@mit.edu>
 
        * bitmap.c (bitmap_debug_file): HOST_PTR_PRINTF converts a pointer,
index 6aa7485..bc6d4f7 100644 (file)
@@ -4114,8 +4114,14 @@ strength_reduce (scan_start, end, loop_top, insn_count,
                        auto_inc_opt = 1;
                    }
                  /* Check for case where increment is before the the address
-                    giv.  */
-                 else if (INSN_LUID (v->insn) > INSN_LUID (bl->biv->insn))
+                    giv.  Do this test in "loop order".  */
+                 else if ((INSN_LUID (v->insn) > INSN_LUID (bl->biv->insn)
+                           && (INSN_LUID (v->insn) < INSN_LUID (scan_start)
+                               || (INSN_LUID (bl->biv->insn)
+                                   > INSN_LUID (scan_start))))
+                          || (INSN_LUID (v->insn) < INSN_LUID (scan_start)
+                              && (INSN_LUID (scan_start)
+                                  < INSN_LUID (bl->biv->insn))))
                    auto_inc_opt = -1;
                  else
                    auto_inc_opt = 1;