diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-05 20:04:27 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-05 20:04:27 +0000 |
commit | 1917ed838f16c85a408b13a0302a397acce543d5 (patch) | |
tree | cca09ee2dcae29ba49e71c6c39bcae4486a45889 /gcc | |
parent | f51a24020e7df8cdbf6b6b4f613362d1733c3b5a (diff) | |
download | gcc-1917ed838f16c85a408b13a0302a397acce543d5.tar.gz |
* haifa-sched.c (schedule_block): Don't crash if there's no
next insn for an interblock movement.
(add_branch_dependences): Don't allow clobber insns to move either.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30422 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 16 |
2 files changed, 15 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 477361cad65..cfcfceb648d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Fri Nov 5 12:04:02 1999 Richard Henderson <rth@cygnus.com> + + * haifa-sched.c (schedule_block): Don't crash if there's no + next insn for an interblock movement. + (add_branch_dependences): Don't allow clobber insns to move either. + Fri Nov 5 10:18:11 1999 Richard Henderson <rth@cygnus.com> * i386.c (split_xf): New. diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 357cfe0811d..57160e17055 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -5876,7 +5876,6 @@ schedule_block (bb, rgn_n_insns) || (insn_issue_delay (insn) <= 3 && check_live (insn, bb_src) && is_exception_free (insn, bb_src, target_bb)))) - { rtx next; @@ -5885,7 +5884,8 @@ schedule_block (bb, rgn_n_insns) speculative insn, NEXT might otherwise be a note. */ next = next_nonnote_insn (insn); if (INSN_DEP_COUNT (insn) == 0 - && (SCHED_GROUP_P (next) == 0 + && (! next + || SCHED_GROUP_P (next) == 0 || GET_RTX_CLASS (GET_CODE (next)) != 'i')) ready[n_ready++] = insn; } @@ -6226,10 +6226,10 @@ add_branch_dependences (head, tail) rtx insn, last; - /* For all branches, calls, uses, and cc0 setters, force them to remain - in order at the end of the block by adding dependencies and giving - the last a high priority. There may be notes present, and prev_head - may also be a note. + /* For all branches, calls, uses, clobbers, and cc0 setters, force them + to remain in order at the end of the block by adding dependencies and + giving the last a high priority. There may be notes present, and + prev_head may also be a note. Branches must obviously remain at the end. Calls should remain at the end since moving them results in worse register allocation. Uses remain @@ -6237,9 +6237,11 @@ add_branch_dependences (head, tail) at the end because they can't be moved away from their cc0 user. */ insn = tail; last = 0; - while (GET_CODE (insn) == CALL_INSN || GET_CODE (insn) == JUMP_INSN + while (GET_CODE (insn) == CALL_INSN + || GET_CODE (insn) == JUMP_INSN || (GET_CODE (insn) == INSN && (GET_CODE (PATTERN (insn)) == USE + || GET_CODE (PATTERN (insn)) == CLOBBER #ifdef HAVE_cc0 || sets_cc0_p (PATTERN (insn)) #endif |