+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.
+
2017-06-09 Tamar Christina <tamar.christina@arm.com>
- * config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive than udiv.
+ * config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive
+ than udiv.
2017-06-09 Tom de Vries <tom@codesourcery.com>
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))
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)