haifa-sched.c (rank_for_schedule): Skip past last_scheduled_insn emitted by cycle_dis...
authorRichard Henderson <rth@redhat.com>
Thu, 2 May 2002 23:59:52 +0000 (16:59 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 2 May 2002 23:59:52 +0000 (16:59 -0700)
        * haifa-sched.c (rank_for_schedule): Skip past last_scheduled_insn
        emitted by cycle_display.

From-SVN: r53072

gcc/ChangeLog
gcc/haifa-sched.c

index 31da6be8468772718642ee5ceddd476c8158da84..b88a93f24ebfa2ae4e923ba78c33fbc137df74c8 100644 (file)
@@ -1,3 +1,8 @@
+2002-05-02  Richard Henderson  <rth@redhat.com>
+
+       * haifa-sched.c (rank_for_schedule): Skip past last_scheduled_insn
+       emitted by cycle_display.
+
 2002-05-02  Loren J. Rittle  <ljrittle@acm.org>
 
        * doc/install.texi (*-*-freebsd*): Update to latest status.
index 2ac8121801f2194768f4f673378900409f36fd74..7af0e73c69e4dc857b0278f2b26ba43518fd38c3 100644 (file)
@@ -852,7 +852,7 @@ rank_for_schedule (x, y)
 {
   rtx tmp = *(const rtx *) y;
   rtx tmp2 = *(const rtx *) x;
-  rtx link;
+  rtx link, lsi;
   int tmp_class, tmp2_class, depend_count1, depend_count2;
   int val, priority_val, weight_val, info_val;
 
@@ -871,23 +871,28 @@ rank_for_schedule (x, y)
     return info_val;
 
   /* Compare insns based on their relation to the last-scheduled-insn.  */
-  if (last_scheduled_insn)
+  for (lsi = last_scheduled_insn;
+       lsi && INSN_UID (lsi) >= old_max_uid;
+       lsi = PREV_INSN (lsi))
+    continue;
+
+  if (lsi)
     {
       /* Classify the instructions into three classes:
          1) Data dependent on last schedule insn.
          2) Anti/Output dependent on last scheduled insn.
          3) Independent of last scheduled insn, or has latency of one.
          Choose the insn from the highest numbered class if different.  */
-      link = find_insn_list (tmp, INSN_DEPEND (last_scheduled_insn));
-      if (link == 0 || insn_cost (last_scheduled_insn, link, tmp) == 1)
+      link = find_insn_list (tmp, INSN_DEPEND (lsi));
+      if (link == 0 || insn_cost (lsi, link, tmp) == 1)
        tmp_class = 3;
       else if (REG_NOTE_KIND (link) == 0)      /* Data dependence.  */
        tmp_class = 1;
       else
        tmp_class = 2;
 
-      link = find_insn_list (tmp2, INSN_DEPEND (last_scheduled_insn));
-      if (link == 0 || insn_cost (last_scheduled_insn, link, tmp2) == 1)
+      link = find_insn_list (tmp2, INSN_DEPEND (lsi));
+      if (link == 0 || insn_cost (lsi, link, tmp2) == 1)
        tmp2_class = 3;
       else if (REG_NOTE_KIND (link) == 0)      /* Data dependence.  */
        tmp2_class = 1;