]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
loop.c (check_dbra_loop): Return if more than one condition is present to control...
authorChandrakala Chavva <cchavva@cygnus.com>
Mon, 17 Jul 2000 18:10:17 +0000 (18:10 +0000)
committerChandra Chavva <cchavva@gcc.gnu.org>
Mon, 17 Jul 2000 18:10:17 +0000 (14:10 -0400)
        * loop.c (check_dbra_loop) : Return if more than one condition is
        present to control the loop.

From-SVN: r35096

gcc/ChangeLog
gcc/loop.c

index 7509ddf4a313966a5c23cefe0228edf662379024..e407547c5ea3e9e31ae962d605cf688798dd4e11 100644 (file)
@@ -1,3 +1,8 @@
+2000-07-17  Chandrakala Chavva   <cchavva@cygnus.com>
+
+       * loop.c (check_dbra_loop) : Return if more than one condition is 
+       present to control the loop.
+
 Mon Jul 17 08:26:35 2000  Clinton Popetz  <cpopetz@cygnus.com>
 
        * mips.c (mips_expand_prologue): Don't calculate the last               
index 066ef931111dc3a40eb6c70170da09ebf0f4a0be..7015dc9fe1cfbfe834e4d607f8eb06bc2724e774 100644 (file)
@@ -7795,6 +7795,17 @@ check_dbra_loop (loop, insn_count)
   else
     return 0;
 
+  {
+    /* If more than one condition is present to control the loop, then
+       do not procceed as this function does not know how to rewrite loop 
+       tests with more than one condition.  */
+
+    rtx jump1;
+    if ((jump1 = prev_nonnote_insn (jump)) != loop_continue)
+      if (GET_CODE (jump1) == JUMP_INSN))
+        return 0;
+  }
+
   /* Check all of the bivs to see if the compare uses one of them.
      Skip biv's set more than once because we can't guarantee that
      it will be zero on the last iteration.  Also skip if the biv is