From 61a17dcaf24cc07c1bcd387b1e63876e848eddd8 Mon Sep 17 00:00:00 2001 From: James Greenhalgh Date: Tue, 17 Feb 2015 09:19:33 +0000 Subject: [PATCH] [Haifa Scheduler] Fix latent bug in macro-fusion/instruction grouping gcc/ * haifa-sched.c (recompute_todo_spec): Treat SCHED_GROUP_P as forcing a HARD_DEP between instructions, thereby disallowing rewriting to break dependencies. From-SVN: r220751 --- gcc/ChangeLog | 6 ++++++ gcc/haifa-sched.c | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d7fc1f4b06a..932d2086e61 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-02-17 James Greenhalgh + + * haifa-sched.c (recompute_todo_spec): Treat SCHED_GROUP_P + as forcing a HARD_DEP between instructions, thereby + disallowing rewriting to break dependencies. + 2015-02-16 Jan Hubicka * symtab.c (symtab_node::verify_base): Verify body_removed->!definiton diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 64c8c9c1f70..7aeedc339d5 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -1233,6 +1233,11 @@ recompute_todo_spec (rtx_insn *next, bool for_backtrack) if (!sd_lists_empty_p (next, SD_LIST_HARD_BACK)) return HARD_DEP; + /* If NEXT is intended to sit adjacent to this instruction, we don't + want to try to break any dependencies. Treat it as a HARD_DEP. */ + if (SCHED_GROUP_P (next)) + return HARD_DEP; + /* Now we've got NEXT with speculative deps only. 1. Look at the deps to see what we have to do. 2. Check if we can do 'todo'. */ -- 2.11.4.GIT