From c9e03727e0c20171c1b1dc0e5f3922b097bb527d Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Tue, 2 Sep 1997 04:12:45 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/haifa-sched.c | 28 +++++++++++++++++++++++++--- gcc/version.c | 2 +- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f82575c83e..3c6479d1fa2 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 dd9e507adf5..b439d90dd43 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 1e47a92dfa3..3f53ba034ff 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)";