diff options
author | James Greenhalgh <james.greenhalgh@arm.com> | 2015-02-17 09:19:33 +0000 |
---|---|---|
committer | James Greenhalgh <jgreenhalgh@gcc.gnu.org> | 2015-02-17 09:19:33 +0000 |
commit | 61a17dcaf24cc07c1bcd387b1e63876e848eddd8 (patch) | |
tree | 92f3f0909eda535f3a7d5856f1b4176839a5bf29 | |
parent | 87be7f0cbbd5927135c54e2ca9c56b522851a2d6 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 5 |
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'. */ |