Commit 8175be9a by Jakub Jelinek Committed by Jakub Jelinek

re PR libgomp/59194 (tsan detects race for real variables in an OMP reduction clause)

	PR libgomp/59194
	* omp-low.c (expand_omp_atomic_pipeline): Expand the initial
	load as __atomic_load_N if possible.

From-SVN: r206572
parent 131241a3
2014-01-13 Jakub Jelinek <jakub@redhat.com>
PR libgomp/59194
* omp-low.c (expand_omp_atomic_pipeline): Expand the initial
load as __atomic_load_N if possible.
2014-01-11 David Edelsohn <dje.gcc@gmail.com> 2014-01-11 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/rs6000.c (rs6000_expand_mtfsf_builtin): Remove * config/rs6000/rs6000.c (rs6000_expand_mtfsf_builtin): Remove
......
...@@ -7536,12 +7536,21 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb, ...@@ -7536,12 +7536,21 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
loadedi = loaded_val; loadedi = loaded_val;
} }
fncode = (enum built_in_function) (BUILT_IN_ATOMIC_LOAD_N + index + 1);
tree loaddecl = builtin_decl_explicit (fncode);
if (loaddecl)
initial
= fold_convert (TREE_TYPE (TREE_TYPE (iaddr)),
build_call_expr (loaddecl, 2, iaddr,
build_int_cst (NULL_TREE,
MEMMODEL_RELAXED)));
else
initial = build2 (MEM_REF, TREE_TYPE (TREE_TYPE (iaddr)), iaddr,
build_int_cst (TREE_TYPE (iaddr), 0));
initial initial
= force_gimple_operand_gsi (&si, = force_gimple_operand_gsi (&si, initial, true, NULL_TREE, true,
build2 (MEM_REF, TREE_TYPE (TREE_TYPE (iaddr)), GSI_SAME_STMT);
iaddr,
build_int_cst (TREE_TYPE (iaddr), 0)),
true, NULL_TREE, true, GSI_SAME_STMT);
/* Move the value to the LOADEDI temporary. */ /* Move the value to the LOADEDI temporary. */
if (gimple_in_ssa_p (cfun)) if (gimple_in_ssa_p (cfun))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment