aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Greenhalgh <james.greenhalgh@arm.com>2015-02-17 09:19:33 +0000
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>2015-02-17 09:19:33 +0000
commit61a17dcaf24cc07c1bcd387b1e63876e848eddd8 (patch)
tree92f3f0909eda535f3a7d5856f1b4176839a5bf29
parent87be7f0cbbd5927135c54e2ca9c56b522851a2d6 (diff)
downloadgcc-61a17dcaf24cc07c1bcd387b1e63876e848eddd8.zip
gcc-61a17dcaf24cc07c1bcd387b1e63876e848eddd8.tar.gz
gcc-61a17dcaf24cc07c1bcd387b1e63876e848eddd8.tar.bz2
[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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/haifa-sched.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d7fc1f4..932d208 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-02-17 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * 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 <hubicka@ucw.cz>
* symtab.c (symtab_node::verify_base): Verify body_removed->!definiton
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 64c8c9c1..7aeedc3 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'. */