aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>2000-08-01 04:19:47 +0000
committerJeff Law <law@gcc.gnu.org>2000-07-31 22:19:47 -0600
commit7905cfefe15c4a2c43803219af5d353252eef9d8 (patch)
treef3c9fd54e6dba6819acba571e9b36b97d14db5e3 /gcc/loop.c
parent68c8d8ce93dd689350341b5586e13b11d2d169dd (diff)
downloadgcc-7905cfefe15c4a2c43803219af5d353252eef9d8.zip
gcc-7905cfefe15c4a2c43803219af5d353252eef9d8.tar.gz
gcc-7905cfefe15c4a2c43803219af5d353252eef9d8.tar.bz2
loop.c (check_dbra_loop): Make change from July 17...
* loop.c (check_dbra_loop): Make change from July 17, 2000 work on targets which need more than one insn for a compare/cbranch operation. From-SVN: r35404
Diffstat (limited to 'gcc/loop.c')
-rw-r--r--gcc/loop.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index f812b2e..20211c6 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -7788,10 +7788,13 @@ check_dbra_loop (loop, insn_count)
{
/* If more than one condition is present to control the loop, then
do not proceed, as this function does not know how to rewrite
- loop tests with more than one condition. */
+ loop tests with more than one condition.
+
+ Look backwards from the first insn in the last comparison
+ sequence and see if we've got another comparison sequence. */
rtx jump1;
- if ((jump1 = prev_nonnote_insn (jump)) != loop->cont)
+ if ((jump1 = prev_nonnote_insn (first_compare)) != loop->cont)
if (GET_CODE (jump1) == JUMP_INSN)
return 0;
}