Commit 50e4f785 authored by Sergio Afonso's avatar Sergio Afonso
Browse files

[MLIR][Flang][OpenMP] Make omp.wsloop into a loop wrapper

This patch updates the definition of `omp.wsloop` to enforce the restrictions
of a wrapper operation. Given the widespread use of this operation, the changes
introduced in this patch are several:

- Update the MLIR definition of the `omp.wsloop`, as well as parser/printer,
builder and verifier.
- Update verifiers for `omp.ordered.region`, `omp.cancel` and
`omp.cancellation_point` to correctly check for a parent `omp.wsloop`.
- Update MLIR to LLVM IR translation of `omp.wsloop` to keep working after the
change in representation. Another patch should be created to reduce the current
code duplication between `omp.wsloop` and `omp.simd` after introducing a common
`omp.loop_nest` operation.
- Update the `scf.parallel` lowering pass to OpenMP to produce the new expected
representation.
- Update flang lowering to implement `omp.wsloop` representation changes,
including changes to `lastprivate`, and `reduction` handling to avoid adding
operations into a wrapper and attach entry block arguments to the right
operation.
- Fix unit tests broken due to the representation change.
parent 3bcb4198
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment