aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChandrakala Chavva <cchavva@cygnus.com>2000-07-17 18:10:17 +0000
committerChandra Chavva <cchavva@gcc.gnu.org>2000-07-17 14:10:17 -0400
commit947851b2c3d2b636bf396f27523dd3e644c4cbff (patch)
tree61fbd0c195cba2c82230e53e2e655ce8d3a7f436
parent2d3483dca01e2813f98de48f673ac9c967add7a2 (diff)
downloadgcc-947851b2c3d2b636bf396f27523dd3e644c4cbff.zip
gcc-947851b2c3d2b636bf396f27523dd3e644c4cbff.tar.gz
gcc-947851b2c3d2b636bf396f27523dd3e644c4cbff.tar.bz2
loop.c (check_dbra_loop): Return if more than one condition is present to control the loop.
* loop.c (check_dbra_loop) : Return if more than one condition is present to control the loop. From-SVN: r35096
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/loop.c11
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7509ddf..e407547 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/loop.c b/gcc/loop.c
index 066ef93..7015dc9 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -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