diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2016-05-19 17:52:56 +0000 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2016-05-19 17:52:56 +0000 |
commit | 5b6e60e2d53675f345db711aeab892b29d094da1 (patch) | |
tree | 0deee605f5cf334ffd4f94ab9c9a00423577c492 | |
parent | 46f06c57d090c0261a8f58713cfc369c8c80316c (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/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/sched-deps.c | 7 |
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: |