aboutsummaryrefslogtreecommitdiff
path: root/libgomp/iter_ull.c
diff options
context:
space:
mode:
authorJoost VandeVondele <vondele@gcc.gnu.org>2015-08-24 11:01:25 +0000
committerJoost VandeVondele <vondele@gcc.gnu.org>2015-08-24 11:01:25 +0000
commitbfe7ac89a0be108eaccfa277db28ed6141a3d5af (patch)
tree9ce340525056994200979fde5121c358e4f37981 /libgomp/iter_ull.c
parentd485982286692075d175dbbcf17d00431106ce96 (diff)
downloadgcc-bfe7ac89a0be108eaccfa277db28ed6141a3d5af.zip
gcc-bfe7ac89a0be108eaccfa277db28ed6141a3d5af.tar.gz
gcc-bfe7ac89a0be108eaccfa277db28ed6141a3d5af.tar.bz2
re PR libgomp/66761 (libgomp: ThreadSanitizer: data race in libgomp)
PR libgomp/66761 PR libgomp/67303 * iter.c (gomp_iter_dynamic_next): Employ an atomic load. (gomp_iter_guided_next): Idem. * iter_ull.c (gomp_iter_ull_dynamic_next): Idem. (gomp_iter_ull_guided_next): Idem. * config/linux/wait.h (do_spin): Idem. From-SVN: r227119
Diffstat (limited to 'libgomp/iter_ull.c')
-rw-r--r--libgomp/iter_ull.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libgomp/iter_ull.c b/libgomp/iter_ull.c
index b1cad84..1c2d118 100644
--- a/libgomp/iter_ull.c
+++ b/libgomp/iter_ull.c
@@ -219,7 +219,7 @@ gomp_iter_ull_dynamic_next (gomp_ull *pstart, gomp_ull *pend)
}
}
- start = ws->next_ull;
+ start = __atomic_load_n (&ws->next_ull, MEMMODEL_RELAXED);
while (1)
{
gomp_ull left = end - start;
@@ -305,7 +305,7 @@ gomp_iter_ull_guided_next (gomp_ull *pstart, gomp_ull *pend)
gomp_ull start, end, nend, incr;
gomp_ull chunk_size;
- start = ws->next_ull;
+ start = __atomic_load_n (&ws->next_ull, MEMMODEL_RELAXED);
end = ws->end_ull;
incr = ws->incr_ull;
chunk_size = ws->chunk_size_ull;