From 7905cfefe15c4a2c43803219af5d353252eef9d8 Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Tue, 1 Aug 2000 04:19:47 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/loop.c | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7c9d309616f..7c24fdae4f4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Mon Jul 31 22:19:24 2000 Jeffrey A Law (law@cygnus.com) + + * 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. + 2000-07-31 Jim Wilson * config/ia64/ia64.c (ia64_function_arg): Use alignment not size 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; }