aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/ModuleUtils.cpp
diff options
context:
space:
mode:
authorJohannes Doerfert <johannes@jdoerfert.de>2022-12-13 22:00:15 -0800
committerJohannes Doerfert <johannes@jdoerfert.de>2022-12-13 22:58:33 -0800
commit07c375348083170e39c9498a42a9679c7e08f07f (patch)
treeba793b22e6b3a1b1931c2b5a180e16b73ea8be9d /llvm/lib/Transforms/Utils/ModuleUtils.cpp
parent36a879e80f8179358001a7a6cfad7adec6e02504 (diff)
downloadllvm-07c375348083170e39c9498a42a9679c7e08f07f.zip
llvm-07c375348083170e39c9498a42a9679c7e08f07f.tar.gz
llvm-07c375348083170e39c9498a42a9679c7e08f07f.tar.bz2
[OpenMP][FIX] Restrict more unsound assmptions about threading
Even if all loads and stores are in `nosync` functions we cannot guarantee there is no synchronization going on between them. As such, we cannot use CFG reasoning. We could check the entire module, or, what happens now to minimize test churn, is to check if all accesses are in the same function that is `nosync`. A follow up will undo some of the regressions where possible. Similarly, reachability cannot be used to exclude an access if the access is not known to be executed by the same thread as the given instruction. The OpenMP-opt test was added for the latter problem.
Diffstat (limited to 'llvm/lib/Transforms/Utils/ModuleUtils.cpp')
0 files changed, 0 insertions, 0 deletions