diff options
author | Revital Eres <revital.eres@linaro.org> | 2011-05-11 07:08:44 +0000 |
---|---|---|
committer | Revital Eres <revitale@gcc.gnu.org> | 2011-05-11 07:08:44 +0000 |
commit | ce7b376154d74610821b94aed418677baf998dba (patch) | |
tree | 2ce89b08c7f88397801fe13872af4ffdb5a6a5a4 /gcc/modulo-sched.c | |
parent | ed1db3f15abf1e8831f8a88c1d4db8fb19256f1f (diff) | |
download | gcc-ce7b376154d74610821b94aed418677baf998dba.zip gcc-ce7b376154d74610821b94aed418677baf998dba.tar.gz gcc-ce7b376154d74610821b94aed418677baf998dba.tar.bz2 |
Doloop pattern for ARM
From-SVN: r173645
Diffstat (limited to 'gcc/modulo-sched.c')
-rw-r--r-- | gcc/modulo-sched.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c index f37d743..091c005 100644 --- a/gcc/modulo-sched.c +++ b/gcc/modulo-sched.c @@ -1009,9 +1009,11 @@ sms_schedule (void) continue; } - /* Don't handle BBs with calls or barriers, or !single_set insns, - or auto-increment insns (to avoid creating invalid reg-moves - for the auto-increment insns). + /* Don't handle BBs with calls or barriers or auto-increment insns + (to avoid creating invalid reg-moves for the auto-increment insns), + or !single_set with the exception of instructions that include + count_reg---these instructions are part of the control part + that do-loop recognizes. ??? Should handle auto-increment insns. ??? Should handle insns defining subregs. */ for (insn = head; insn != NEXT_INSN (tail); insn = NEXT_INSN (insn)) @@ -1021,7 +1023,8 @@ sms_schedule (void) if (CALL_P (insn) || BARRIER_P (insn) || (NONDEBUG_INSN_P (insn) && !JUMP_P (insn) - && !single_set (insn) && GET_CODE (PATTERN (insn)) != USE) + && !single_set (insn) && GET_CODE (PATTERN (insn)) != USE + && !reg_mentioned_p (count_reg, insn)) || (FIND_REG_INC_NOTE (insn, NULL_RTX) != 0) || (INSN_P (insn) && (set = single_set (insn)) && GET_CODE (SET_DEST (set)) == SUBREG)) |