aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-im.c
diff options
context:
space:
mode:
authorRichard Biener <rguenth@gcc.gnu.org>2017-06-09 13:31:27 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-06-09 13:31:27 +0000
commit2866f21d191bb00c08f3a3c3a13af8b8f1a69ba4 (patch)
treecd323d8176bfe332c019d14f9d5b04d1fe8be8f9 /gcc/tree-ssa-loop-im.c
parent37b68a4389bd452e9b5aa03870f6b81e4f26b71c (diff)
downloadgcc-2866f21d191bb00c08f3a3c3a13af8b8f1a69ba4.zip
gcc-2866f21d191bb00c08f3a3c3a13af8b8f1a69ba4.tar.gz
gcc-2866f21d191bb00c08f3a3c3a13af8b8f1a69ba4.tar.bz2
tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded model if the ref is always written to.
2017-06-09 Richard Biener <rguenther@suse.de> * tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded model if the ref is always written to. From-SVN: r249063
Diffstat (limited to 'gcc/tree-ssa-loop-im.c')
-rw-r--r--gcc/tree-ssa-loop-im.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c
index 2dcb85d..e92eaa6 100644
--- a/gcc/tree-ssa-loop-im.c
+++ b/gcc/tree-ssa-loop-im.c
@@ -198,6 +198,7 @@ static bitmap_obstack lim_bitmap_obstack;
static obstack mem_ref_obstack;
static bool ref_indep_loop_p (struct loop *, im_mem_ref *, struct loop *);
+static bool ref_always_accessed_p (struct loop *, im_mem_ref *, bool);
/* Minimum cost of an expensive expression. */
#define LIM_EXPENSIVE ((unsigned) PARAM_VALUE (PARAM_LIM_EXPENSIVE))
@@ -2025,7 +2026,8 @@ execute_sm (struct loop *loop, vec<edge> exits, im_mem_ref *ref)
for_each_index (&ref->mem.ref, force_move_till, &fmt_data);
if (bb_in_transaction (loop_preheader_edge (loop)->src)
- || !PARAM_VALUE (PARAM_ALLOW_STORE_DATA_RACES))
+ || (! PARAM_VALUE (PARAM_ALLOW_STORE_DATA_RACES)
+ && ! ref_always_accessed_p (loop, ref, true)))
multi_threaded_model_p = true;
if (multi_threaded_model_p)