summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>1999-11-05 20:04:27 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>1999-11-05 20:04:27 +0000
commit1917ed838f16c85a408b13a0302a397acce543d5 (patch)
treecca09ee2dcae29ba49e71c6c39bcae4486a45889 /gcc
parentf51a24020e7df8cdbf6b6b4f613362d1733c3b5a (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/haifa-sched.c16
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