[OpenMP] Fix data-race in new device RTL
authorJoseph Huber <jhuber6@vols.utk.edu>
Thu, 23 Sep 2021 21:18:53 +0000 (17:18 -0400)
committerJoseph Huber <jhuber6@vols.utk.edu>
Thu, 23 Sep 2021 21:28:07 +0000 (17:28 -0400)
commitd83ca624a1d52b600ddbd8bfcbb3d5d7c6003af7
tree5b3e5d1079dea4c5034367da9a5df92cb713a9e3
parent2875d3d484bb82dcd7f44bccafda8a52aacc328d
[OpenMP] Fix data-race in new device RTL

This patch fixes a data-race observed when using the new device runtime
library. The Internal control variable for the parallel level is read in
the `__kmpc_parallel_51` function while it could potentially be written
by other threads. This causes data corruption and will cause
nondetermistic behaviour in the runtime. This patch fixes this by adding
an explicit synchronization before the region starts.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D110366
openmp/libomptarget/DeviceRTL/src/Parallelism.cpp