summaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-01 04:19:47 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-01 04:19:47 +0000
commit3c68ac580d9b574c4415828b4f0647e2ef0d4a07 (patch)
treef3c9fd54e6dba6819acba571e9b36b97d14db5e3 /gcc/loop.c
parent95d80c61074b26592f32e3b73222e1414d338100 (diff)
downloadgcc-3c68ac580d9b574c4415828b4f0647e2ef0d4a07.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35404 138bc75d-0d04-0410-961f-82ee72b054a4
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 f812b2e4c76..20211c67297 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;
}