>From 5a8ecfe2e5a9bfc9aed03f97e5d861b251d98dbf Mon Sep 17 00:00:00 2001
From: Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org>
Date: Mon, 14 Jul 2014 00:26:33 +0100
Subject: [PATCH 1/2] Fix INSN_TICK heuristic for SCHED_PRESSURE

	* haifa-sched.c (rank_for_schedule): Fix INSN_TICK-based heuristics.
---
 gcc/haifa-sched.c |   16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index f93fe4c..d17ff46 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;
-- 
1.7.9.5

