summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcchavva <cchavva@138bc75d-0d04-0410-961f-82ee72b054a4>2000-07-17 18:10:17 +0000
committercchavva <cchavva@138bc75d-0d04-0410-961f-82ee72b054a4>2000-07-17 18:10:17 +0000
commitccbe285c25622a9d5260426c5d050390880826cc (patch)
tree61fbd0c195cba2c82230e53e2e655ce8d3a7f436
parent878c61feec3d4d188219b3a1f53d8f151cd320d4 (diff)
downloadppe42-gcc-ccbe285c25622a9d5260426c5d050390880826cc.tar.gz
ppe42-gcc-ccbe285c25622a9d5260426c5d050390880826cc.zip
* loop.c (check_dbra_loop) : Return if more than one condition is
present to control the loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35096 138bc75d-0d04-0410-961f-82ee72b054a4
-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 7509ddf4a31..e407547c5ea 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 066ef931111..7015dc9fe1c 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
OpenPOWER on IntegriCloud