sched-deps.c (sched_analyze_2): Also force pending loads from memory.
authorUros Bizjak <uros@gcc.gnu.org>
Thu, 19 May 2016 17:52:56 +0000 (19:52 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Thu, 19 May 2016 17:52:56 +0000 (19:52 +0200)
* sched-deps.c (sched_analyze_2) <case TRAP_IF>: Also
force pending loads from memory.

From-SVN: r236481

gcc/ChangeLog
gcc/sched-deps.c

index d44c793b840057cf87f39f9a1a1bd473c2a35f68..1c62002bb0e6c1b63b8f24459fa3e43786c4de7f 100644 (file)
@@ -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>
 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>
 
index 5c8e020bb5b82d0710a48064f396da1dac33e9db..41a6af25c79b609af947538d8b7df1d87dfcb8a0 100644 (file)
@@ -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: