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
This commit is contained in:
Jeffrey A Law 2000-08-01 04:19:47 +00:00 committed by Jeff Law
parent 68c8d8ce93
commit 7905cfefe1
2 changed files with 11 additions and 2 deletions

View File

@ -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 <wilson@cygnus.com> 2000-07-31 Jim Wilson <wilson@cygnus.com>
* config/ia64/ia64.c (ia64_function_arg): Use alignment not size * config/ia64/ia64.c (ia64_function_arg): Use alignment not size

View File

@ -7788,10 +7788,13 @@ check_dbra_loop (loop, insn_count)
{ {
/* If more than one condition is present to control the loop, then /* If more than one condition is present to control the loop, then
do not proceed, as this function does not know how to rewrite 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; 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) if (GET_CODE (jump1) == JUMP_INSN)
return 0; return 0;
} }