diff options
author | Jeffrey A Law <law@cygnus.com> | 1997-09-13 19:00:22 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-09-13 13:00:22 -0600 |
commit | 326ee7a3fe67675491fee5445748d705499cb339 (patch) | |
tree | a26834b8acc34fd8851f989bb68dee4b88f1aac3 /gcc | |
parent | 0520f6c01a8a494a17c3ce0c146a1a28dca51367 (diff) | |
download | gcc-326ee7a3fe67675491fee5445748d705499cb339.zip gcc-326ee7a3fe67675491fee5445748d705499cb339.tar.gz gcc-326ee7a3fe67675491fee5445748d705499cb339.tar.bz2 |
haifa-sched.c (add_branch_dependences): Make each insn in a SCHED_GROUP_P block explicitly depend on the previous insn.
* haifa-sched.c (add_branch_dependences): Make each insn in
a SCHED_GROUP_P block explicitly depend on the previous insn.
Fixes x86 abort.
From-SVN: r15430
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 12 |
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dae16a5..aea087b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sat Sep 13 12:57:26 1997 Jeffrey A Law (law@cygnus.com) + + * haifa-sched.c (add_branch_dependences): Make each insn in + a SCHED_GROUP_P block explicitly depend on the previous insn. + Thu Sep 11 17:43:55 1997 Jim Wilson <wilson@cygnus.com> * configure.in (native_prefix): Delete. diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 4b0be88..16b1e20 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -7106,9 +7106,17 @@ add_branch_dependences (head, tail) CANT_MOVE (insn) = 1; last = insn; - /* Skip over insns that are part of a group. */ + /* Skip over insns that are part of a group. + Make each insn explicitly depend on the previous insn. + This ensures that only the group header will ever enter + the ready queue (and, when scheduled, will automatically + schedule the SCHED_GROUP_P block). */ while (SCHED_GROUP_P (insn)) - insn = prev_nonnote_insn (insn); + { + rtx temp = prev_nonnote_insn (insn); + add_dependence (insn, temp, REG_DEP_ANTI); + insn = temp; + } } /* Don't overrun the bounds of the basic block. */ |