[OpenMP][Tools] Fix Archer handling of task dependencies
authorJoachim Protze <protze@itc.rwth-aachen.de>
Sat, 21 Nov 2020 23:23:35 +0000 (00:23 +0100)
committerJoachim Protze <protze@itc.rwth-aachen.de>
Wed, 9 Jun 2021 11:36:20 +0000 (13:36 +0200)
commit639b3979310d8cec82b9b0a3ad3e64566244717f
tree95d5d74369ce1681ae4cccf6140b4133547730aa
parent08d8f1a958bd8be681e3e1f346be80818a83a556
[OpenMP][Tools] Fix Archer handling of task dependencies

The current handling of dependencies in Archer has two flaws:

- annotation of dependency synchronization is not limited to sibling tasks
- annotation of in/out dependencies is based on the assumption, that dependency
  variables will rarely be byte-sized variables.

This patch introduces a map in the generating task to manage the dependency
variables for the child tasks. The map is only accesses from the generating
task, so no locking is necessary. This also limits the dependency-based
synchronization to sibling tasks.
This patch also introduces proper handling for new dependency types such as
mutexinoutset and inoutset.

Differential Revision: https://reviews.llvm.org/D103608
openmp/tools/archer/ompt-tsan.cpp