aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1997-09-13 19:00:22 +0000
committerJeff Law <law@gcc.gnu.org>1997-09-13 13:00:22 -0600
commit326ee7a3fe67675491fee5445748d705499cb339 (patch)
treea26834b8acc34fd8851f989bb68dee4b88f1aac3 /gcc
parent0520f6c01a8a494a17c3ce0c146a1a28dca51367 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/haifa-sched.c12
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. */