OSDN Git Service

* haifa-sched.c (add_branch_dependences): Make each insn in
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Sep 1997 19:00:22 +0000 (19:00 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Sep 1997 19:00:22 +0000 (19:00 +0000)
        a SCHED_GROUP_P block explicitly depend on the previous insn.
Fixes x86 abort.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@15430 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/haifa-sched.c

index dae16a5..aea087b 100644 (file)
@@ -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.
index 4b0be88..16b1e20 100644 (file)
@@ -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.  */