diff options
author | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 1996-01-12 22:47:32 +0000 |
---|---|---|
committer | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 1996-01-12 22:47:32 +0000 |
commit | f377bd971f5ffd02a3dee47ce7e9166725cb9179 (patch) | |
tree | c03d3b03b48853a6119c5823bd2fac2f1f9004c3 /gcc/sched.c | |
parent | d629c417a41301ad41190f21afe307255e8f00bf (diff) | |
download | gcc-f377bd971f5ffd02a3dee47ce7e9166725cb9179.tar.gz |
* sched.c (schedule_block): Maintain a valid chain so
emit_note_before works.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10970 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched.c')
-rw-r--r-- | gcc/sched.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/gcc/sched.c b/gcc/sched.c index 150f68f6049..dd194e6b94b 100644 --- a/gcc/sched.c +++ b/gcc/sched.c @@ -1,5 +1,5 @@ /* Instruction scheduling pass. - Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc. + Copyright (C) 1992, 93-95, 1996 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) @@ -3909,6 +3909,14 @@ schedule_block (b, file) sched_n_insns += 1; NEXT_INSN (insn) = last; PREV_INSN (last) = insn; + + /* Maintain a valid chain so emit_note_before works. + This is necessary because PREV_INSN (insn) isn't valid and + if it points to an insn already scheduled, a circularity + will result. */ + NEXT_INSN (prev_head) = insn; + PREV_INSN (insn) = prev_head; + last = insn; /* Check to see if we need to re-emit any notes here. */ @@ -3946,6 +3954,14 @@ schedule_block (b, file) sched_n_insns += 1; NEXT_INSN (insn) = last; PREV_INSN (last) = insn; + + /* Maintain a valid chain so emit_note_before works. + This is necessary because PREV_INSN (insn) isn't valid and + if it points to an insn already scheduled, a circularity + will result. */ + NEXT_INSN (prev_head) = insn; + PREV_INSN (insn) = prev_head; + last = insn; last = reemit_notes (insn, last); |