aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1997-09-02 04:12:45 +0000
committerJeff Law <law@gcc.gnu.org>1997-09-01 22:12:45 -0600
commitc9e03727e0c20171c1b1dc0e5f3922b097bb527d (patch)
tree78cf5f4acbac57342e44204856bd9fdf25b58624
parenta5d6a95b99188fd2e42a13ae79093d85ac40c7bf (diff)
downloadgcc-c9e03727e0c20171c1b1dc0e5f3922b097bb527d.zip
gcc-c9e03727e0c20171c1b1dc0e5f3922b097bb527d.tar.gz
gcc-c9e03727e0c20171c1b1dc0e5f3922b097bb527d.tar.bz2
version.c: Bump for snapshot.
* 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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/haifa-sched.c28
-rw-r--r--gcc/version.c2
3 files changed, 33 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8f82575c..3c6479d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index dd9e507..b439d90 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -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
diff --git a/gcc/version.c b/gcc/version.c
index 1e47a92..3f53ba0 100644
--- a/gcc/version.c
+++ b/gcc/version.c
@@ -1 +1 @@
-char *version_string = "egcs-2.90.03 970828 (gcc2-970802 experimental)";
+char *version_string = "egcs-2.90.04 970901 (gcc2-970802 experimental)";