[OpenMP][FIX] Properly track and lookup Execution Domains
authorJohannes Doerfert <johannes@jdoerfert.de>
Tue, 7 Mar 2023 21:26:31 +0000 (13:26 -0800)
committerJohannes Doerfert <johannes@jdoerfert.de>
Tue, 21 Mar 2023 00:44:24 +0000 (17:44 -0700)
commitb89558a2ae4b5b20a6f3e8ba0295439f947fd38c
tree8c6449eaf6a368e102de9a1c1c509636c46bacc5
parent0fc63d4e642fcf79e9806dc3ae7a49defaae2479
[OpenMP][FIX] Properly track and lookup Execution Domains

This is a two part fix. First, we need two Execution Domains (ED) to
track the values of a function. One for incoming values and one for
outgoing values. This was conflated before. Second, at the function
entry we need to look at the incoming information from call sites not
iterate over non-existing predecessors.
llvm/lib/Transforms/IPO/AttributorAttributes.cpp
llvm/lib/Transforms/IPO/OpenMPOpt.cpp
llvm/test/Transforms/Attributor/reduced/openmp_opt_global_read.ll [new file with mode: 0644]
llvm/test/Transforms/Attributor/reduced/openmp_opt_global_synced.ll [new file with mode: 0644]
llvm/test/Transforms/OpenMP/value-simplify-openmp-opt.ll