From: Maxim Kuvyrkov Date: Thu, 7 Aug 2014 11:16:16 +0000 (+0000) Subject: Fix INSN_TICK heuristic for SCHED_PRESSURE X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=88366b18d690e8cd41dd4c47e96c5595ffcad8a2;p=gcc.git Fix INSN_TICK heuristic for SCHED_PRESSURE * haifa-sched.c (rank_for_schedule): Fix INSN_TICK-based heuristics. From-SVN: r213708 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f5e63955f31..b6f03630890 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 fb15e0db882..a33186d45cb 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;