jump.c (can_reverse_comparison_p): Do not abort if the comparison insn for a conditio...
authorJeff Law <law@gcc.gnu.org>
Thu, 20 May 1999 00:41:26 +0000 (18:41 -0600)
committerJeff Law <law@gcc.gnu.org>
Thu, 20 May 1999 00:41:26 +0000 (18:41 -0600)
p
        * jump.c (can_reverse_comparison_p): Do not abort if the comparison
        insn for a conditional jump can not be found.

From-SVN: r27043

gcc/jump.c

index 9b727fa32c85e7cb995f8441bb576ba63f63d63e..01df0dbba759423856d3c189215ea97ddf3193a6 100644 (file)
@@ -3151,8 +3151,17 @@ can_reverse_comparison_p (comparison, insn)
       )
     {
       rtx prev = prev_nonnote_insn (insn);
-      rtx set = single_set (prev);
+      rtx set;
 
+      /* If the comparison itself was a loop invariant, it could have been
+        hoisted out of the loop.  If we proceed to unroll such a loop, then
+        we may not be able to find the comparison when copying the loop.
+
+        Returning zero in that case is the safe thing to do.  */
+      if (prev == 0)
+       return 0;
+
+      set = single_set (prev);
       if (set == 0 || SET_DEST (set) != arg0)
        return 0;