diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2016-05-19 19:52:56 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2016-05-19 19:52:56 +0200 |
commit | 3e009bf0e968f77a6ae0705544cd169ea6e95fd0 (patch) | |
tree | 0deee605f5cf334ffd4f94ab9c9a00423577c492 /gcc/sched-deps.c | |
parent | 4f45da44cd3a43e9daf5cb12573d80803a2c1028 (diff) | |
download | gcc-3e009bf0e968f77a6ae0705544cd169ea6e95fd0.zip gcc-3e009bf0e968f77a6ae0705544cd169ea6e95fd0.tar.gz gcc-3e009bf0e968f77a6ae0705544cd169ea6e95fd0.tar.bz2 |
sched-deps.c (sched_analyze_2): Also force pending loads from memory.
* sched-deps.c (sched_analyze_2) <case TRAP_IF>: Also
force pending loads from memory.
From-SVN: r236481
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r-- | gcc/sched-deps.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 5c8e020..41a6af2 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: |