aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2016-05-19 17:52:56 +0000
committerUros Bizjak <ubizjak@gmail.com>2016-05-19 17:52:56 +0000
commit5b6e60e2d53675f345db711aeab892b29d094da1 (patch)
tree0deee605f5cf334ffd4f94ab9c9a00423577c492
parent46f06c57d090c0261a8f58713cfc369c8c80316c (diff)
* sched-deps.c (sched_analyze_2) <case TRAP_IF>: Also
force pending loads from memory. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236481 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/sched-deps.c7
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d44c793b840..1c62002bb0e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-05-19 Uros Bizjak <ubizjak@gmail.com>
+
+ * sched-deps.c (sched_analyze_2) <case TRAP_IF>: Also
+ force pending loads from memory.
+
2016-05-19 Kelvin Nilsen <kelvin@gcc.gnu.org>
* config/rs6000/altivec.md (UNSPEC_DARN): New unspec constant.
@@ -39,7 +44,7 @@
2016-05-19 Jan Hubicka <hubicka@ucw.cz>
- * tree-vect-loop.c (vect_analyze_loop_2): Use also
+ * tree-vect-loop.c (vect_analyze_loop_2): Use also
max_loop_iterations_int.
2016-05-19 Marek Polacek <polacek@redhat.com>
@@ -97,8 +102,7 @@
2016-05-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.c (arm_new_rtx_costs, SIGN_EXTEND case):
- Don't add cost of inner memory when handling sign-extended
- loads.
+ Don't add cost of inner memory when handling sign-extended loads.
2016-05-19 Ilya Enkovich <ilya.enkovich@intel.com>
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index 5c8e020bb5b..41a6af25c79 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -2709,9 +2709,12 @@ sched_analyze_2 (struct deps_desc *deps, rtx x, rtx_insn *insn)
return;
}
- /* Force pending stores to memory in case a trap handler needs them. */
+ /* Force pending stores to memory in case a trap handler needs them.
+ Also force pending loads from memory; loads and stores can segfault
+ and the signal handler won't be triggered if the trap insn was moved
+ above load or store insn. */
case TRAP_IF:
- flush_pending_lists (deps, insn, true, false);
+ flush_pending_lists (deps, insn, true, true);
break;
case PREFETCH: