From 79be434401a6144c41aacacccc06a07cc28b6030 Mon Sep 17 00:00:00 2001 From: mkuvyrkov Date: Thu, 7 Aug 2014 11:16:16 +0000 Subject: [PATCH] Fix INSN_TICK heuristic for SCHED_PRESSURE * haifa-sched.c (rank_for_schedule): Fix INSN_TICK-based heuristics. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213708 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/haifa-sched.c | 16 ++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) 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; -- 2.7.4