diff options
author | Joachim Jenke <jenke@itc.rwth-aachen.de> | 2023-11-21 18:36:12 +0100 |
---|---|---|
committer | Joachim Jenke <jenke@itc.rwth-aachen.de> | 2023-11-21 18:36:12 +0100 |
commit | f5e50b21da0cb543064b2d0b9304ce0b368cf2bb (patch) | |
tree | 292436a41d505238619ffb06aed33e37804775eb /llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp | |
parent | 8169c157d5aaee67f6a5b13ca82d09e1b2848051 (diff) | |
download | llvm-f5e50b21da0cb543064b2d0b9304ce0b368cf2bb.zip llvm-f5e50b21da0cb543064b2d0b9304ce0b368cf2bb.tar.gz llvm-f5e50b21da0cb543064b2d0b9304ce0b368cf2bb.tar.bz2 |
[OpenMP] Optimized trivial multiple edges from task dependency graph
From "3.1 Reducing the number of edges" of this [[ https://hal.science/hal-04136674v1/ | paper ]] - Optimization (b)
Task (dependency) nodes have a `successors` list built upon passed dependency.
Given the following code, B will be added to A's successors list building the graph `A` -> `B`
```
// A
# pragma omp task depend(out: x)
{}
// B
# pragma omp task depend(in: x)
{}
```
In the following code, B is currently added twice to A's successor list
```
// A
# pragma omp task depend(out: x, y)
{}
// B
# pragma omp task depend(in: x, y)
{}
```
This patch removes such dupplicates by checking lastly inserted task in `A` successor list.
Authored by: Romain Pereira (rpereira-dev)
Differential Revision: https://reviews.llvm.org/D158544
Diffstat (limited to 'llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions