gcc/
* haifa-sched.c (dep_list_costs): New.
(rank_for_schedule): Use dep_list_costs.
---
gcc/haifa-sched.c | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 350178c82b8..32cd640bb67 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -1584,6 +1584,33 @@ dep_list_size (rtx_insn *insn, sd_list_types_def list)
return nodbgcount;
}
+/* Compute the costs of nondebug deps in list LIST for INSN. */
+
+static int
+dep_list_costs (rtx_insn *insn, sd_list_types_def list)
+{
+ sd_iterator_def sd_it;
+ dep_t dep;
+ int costs = 0;
+
+ FOR_EACH_DEP (insn, list, sd_it, dep)
+ {
+ if (!DEBUG_INSN_P (DEP_CON (dep))
+ && !DEBUG_INSN_P (DEP_PRO (dep)))
+ {
+ int bypass = INSN_CODE (DEP_PRO (dep)) >= 0
+ && bypass_p (DEP_PRO (dep))
+ && recog_memoized (DEP_CON (dep)) >= 0
+ && !dep_cost (dep);
+
+ if (!bypass)
+ costs++;
+ }
+ }
+
+ return costs;
+}
+
bool sched_fusion;
/* Compute the priority number for INSN. */
@@ -2795,8 +2822,8 @@ rank_for_schedule (const void *x, const void *y)
This gives the scheduler more freedom when scheduling later
instructions at the expense of added register pressure. */
- val = (dep_list_size (tmp2, SD_LIST_FORW)
- - dep_list_size (tmp, SD_LIST_FORW));
+ val = (dep_list_costs (tmp2, SD_LIST_FORW)
+ - dep_list_costs (tmp, SD_LIST_FORW));
if (flag_sched_dep_count_heuristic && val != 0)
return rfs_result (RFS_DEP_COUNT, val, tmp, tmp2);
--
2.24.3 (Apple Git-128)