unroll.c (loop_iterations): Don't return a final value for EQ comparison loops.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Fri, 12 Mar 1999 12:46:36 +0000 (12:46 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Fri, 12 Mar 1999 12:46:36 +0000 (12:46 +0000)
* unroll.c (loop_iterations): Don't return a final value for EQ
comparison loops.

From-SVN: r25729

gcc/ChangeLog
gcc/unroll.c

index 417319dba6f790062ff27babbe528361789c7d96..def3819faf6865c11b647218376f2bb36df5fc4c 100644 (file)
@@ -1,3 +1,8 @@
+Fri Mar 12 20:45:30 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * unroll.c (loop_iterations): Don't return a final value for EQ
+       comparison loops.
+
 Fri Mar 12 12:35:01 1999  Jim Wilson  <wilson@cygnus.com>
 
        * reload1.c (calculate_needs_all_insns): When ignore equivalence
index 32ed5314370b68b7c0061c1e02d436f9ee26e984..e119352dc8a5ccef4217940a4828d67f71a6c22e 100644 (file)
@@ -3820,6 +3820,12 @@ loop_iterations (loop_start, loop_end, loop_info)
   loop_info->initial_equiv_value = initial_value;
   loop_info->final_equiv_value = final_value;
 
+  /* For EQ comparison loops, we don't have a valid final value.
+     Check this now so that we won't leave an invalid value if we
+     return early for any other reason.  */
+  if (comparison_code == EQ)
+      loop_info->final_equiv_value = loop_info->final_value = 0;
+
   if (increment == 0)
     {
       if (loop_dump_stream)