version.c: Bump for snapshot.
authorJeffrey A Law <law@cygnus.com>
Tue, 2 Sep 1997 04:12:45 +0000 (04:12 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 2 Sep 1997 04:12:45 +0000 (22:12 -0600)
        * version.c: Bump for snapshot.
Preparing for next snapshot.

        * haifa-sched.c (move_insn): Handle notes correctly for insns
        with SCHED_GROUP_P set.
Should fix some x86 failures with haifa enabled.

From-SVN: r15027

gcc/ChangeLog
gcc/haifa-sched.c
gcc/version.c

index 8f82575c83e7f7f647b0f413543ca0f8aad31ae4..3c6479d1fa2dc2439233bd121118c5282a2e42aa 100644 (file)
@@ -1,3 +1,10 @@
+Mon Sep  1 22:13:18 1997  Jeffrey A Law  (law@cygnus.com)
+
+       * version.c: Bump for snapshot.
+
+       * haifa-sched.c (move_insn): Handle notes correctly for insns
+       with SCHED_GROUP_P set.
+       
 Mon Sep  1 16:58:57 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
 
        * alpha/xm-linux.h (USE_BFD): Undef before define.
index dd9e507adf56a470f382e2802880a49128c7884a..b439d90dd43b6527efe23916f7fea587e4f3994d 100644 (file)
@@ -6494,23 +6494,45 @@ reemit_notes (insn, last)
 }
 
 /* Move INSN, and all insns which should be issued before it,
-   due to SCHED_GROUP_P flag.  Reemit notes if needed.  */
+   due to SCHED_GROUP_P flag.  Reemit notes if needed.
+
+   Return the last insn emitted by the scheduler, which is the
+   return value from the first call to reemit_notes.  */
 
 static rtx
 move_insn (insn, last)
      rtx insn, last;
 {
-  rtx new_last = insn;
+  rtx retval = NULL;
 
+  /* If INSN has SCHED_GROUP_P set, then issue it and any other
+     insns with SCHED_GROUP_P set first.  */
   while (SCHED_GROUP_P (insn))
     {
       rtx prev = PREV_INSN (insn);
+
+      /* Move a SCHED_GROUP_P insn.  */
       move_insn1 (insn, last);
+      /* If this is the first call to reemit_notes, then record
+        its return value.  */
+      if (retval == NULL_RTX)
+       retval = reemit_notes (insn, insn);
+      else
+       reemit_notes (insn, insn);
       insn = prev;
     }
 
+  /* Now move the first non SCHED_GROUP_P insn.  */
   move_insn1 (insn, last);
-  return reemit_notes (new_last, new_last);
+
+  /* If this is the first call to reemit_notes, then record
+     its return value.  */
+  if (retval == NULL_RTX)
+    retval = reemit_notes (insn, insn);
+  else
+    reemit_notes (insn, insn);
+
+  return retval;
 }
 
 /* Return an insn which represents a SCHED_GROUP, which is
index 1e47a92dfa3722a5f3a36f76b92da059d95d42b4..3f53ba034ff286fa370f44d07faa49b6376c34ae 100644 (file)
@@ -1 +1 @@
-char *version_string = "egcs-2.90.03 970828 (gcc2-970802 experimental)";
+char *version_string = "egcs-2.90.04 970901 (gcc2-970802 experimental)";