From 88366b18d690e8cd41dd4c47e96c5595ffcad8a2 Mon Sep 17 00:00:00 2001 From: Maxim Kuvyrkov Date: Thu, 7 Aug 2014 11:16:16 +0000 Subject: Fix INSN_TICK heuristic for SCHED_PRESSURE * haifa-sched.c (rank_for_schedule): Fix INSN_TICK-based heuristics. From-SVN: r213708 --- gcc/ChangeLog | 4 ++++ gcc/haifa-sched.c | 16 ++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f5e63955..b6f0363 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2014-08-07 Maxim Kuvyrkov + + * haifa-sched.c (rank_for_schedule): Fix INSN_TICK-based heuristics. + 2014-08-07 Ilya Tocar * config/i386/sse.md (vec_extract_lo_): Fix diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index fb15e0d..a33186d 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -2584,14 +2584,11 @@ rank_for_schedule (const void *x, const void *y) } if (sched_pressure != SCHED_PRESSURE_NONE - && (INSN_TICK (tmp2) > clock_var || INSN_TICK (tmp) > clock_var)) + && (INSN_TICK (tmp2) > clock_var || INSN_TICK (tmp) > clock_var) + && INSN_TICK (tmp2) != INSN_TICK (tmp)) { - if (INSN_TICK (tmp) <= clock_var) - return -1; - else if (INSN_TICK (tmp2) <= clock_var) - return 1; - else - return INSN_TICK (tmp) - INSN_TICK (tmp2); + diff = INSN_TICK (tmp) - INSN_TICK (tmp2); + return diff; } /* If we are doing backtracking in this schedule, prefer insns that @@ -2676,10 +2673,9 @@ rank_for_schedule (const void *x, const void *y) } /* Prefer instructions that occur earlier in the model schedule. */ - if (sched_pressure == SCHED_PRESSURE_MODEL) + if (sched_pressure == SCHED_PRESSURE_MODEL + && INSN_BB (tmp) == target_bb && INSN_BB (tmp2) == target_bb) { - int diff; - diff = model_index (tmp) - model_index (tmp2); if (diff != 0) return diff; -- cgit v1.1