aboutsummaryrefslogtreecommitdiff
path: root/gcc/haifa-sched.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-05-02 16:59:52 -0700
committerRichard Henderson <rth@gcc.gnu.org>2002-05-02 16:59:52 -0700
commit0bfb9a691ff8561383df396da0fa0aff3e30fe43 (patch)
treebb037bbd88e7c88ed9fc60cad80131d6de5684be /gcc/haifa-sched.c
parent6b976d997cfd5ef56ecbe9f7ee5766034c7e614c (diff)
downloadgcc-0bfb9a691ff8561383df396da0fa0aff3e30fe43.zip
gcc-0bfb9a691ff8561383df396da0fa0aff3e30fe43.tar.gz
gcc-0bfb9a691ff8561383df396da0fa0aff3e30fe43.tar.bz2
haifa-sched.c (rank_for_schedule): Skip past last_scheduled_insn emitted by cycle_display.
* haifa-sched.c (rank_for_schedule): Skip past last_scheduled_insn emitted by cycle_display. From-SVN: r53072
Diffstat (limited to 'gcc/haifa-sched.c')
-rw-r--r--gcc/haifa-sched.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 2ac8121..7af0e73 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -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;