[flang-commits] [flang] [Flang][OpenMP] add more OpenMP support entries and status updates (PR #212889)
Krzysztof Parzyszek via flang-commits
flang-commits at lists.llvm.org
Sat Aug 1 10:16:11 PDT 2026
================
@@ -114,79 +114,100 @@ Parser/Semantics, MLIR, Lowering, or the OpenMPIRBuilder.
| target teams distribute parallel loop construct | <span class="good">done</span> | | |
| teams distribute parallel loop simd construct | <span class="part">partial</span> | | Implicit linearization is skipped if iv is a pointer or allocatable |
| target teams distribute parallel loop simd construct | <span class="part">partial</span> | | Implicit linearization is completely skipped |
+| taskgroup construct | <span class="good">done</span> | | Semantics and lowering coverage exists (`flang/test/Semantics/OpenMP/taskgroup01.f90`, `flang/test/Lower/OpenMP/taskgroup.f90`). |
+
+## OpenMP 4.5
+
+| Feature | Status | Claimed By | Notes | Reviews |
+|:--------|:-------|:-----------|:------|:--------|
+| directive-name-modifier in if clause for combined constructs | <span class="good">done</span> | | Semantics and lowering coverage exists for all combined-construct if-modifier forms (`flang/test/Semantics/OpenMP/if-clause-45.f90`, `flang/test/Semantics/OpenMP/if-clause.f90`, `flang/test/Lower/OpenMP/if-clause.f90`). | [llvm/llvm-project#118128](https://github.com/llvm/llvm-project/pull/118128), [llvm/llvm-project#205164](https://github.com/llvm/llvm-project/pull/205164) |
+| stand-alone ordered construct and source/sink depend types | <span class="part">partial</span> | dreachem | Semantics coverage exists (`flang/test/Semantics/OpenMP/ordered01.f90`, `flang/test/Semantics/OpenMP/do-ordered.f90`), and stand-alone ordered without depend lowers correctly (`flang/test/Lower/OpenMP/ordered-threads.f90`); lowering of `depend(source)` and `depend(sink:)` forms is explicitly TODO (`flang/test/Lower/OpenMP/Todo/ordered-depend.f90`). | [llvm/llvm-project#115396](https://github.com/llvm/llvm-project/pull/115396), [llvm/llvm-project#115397](https://github.com/llvm/llvm-project/pull/115397), [llvm/llvm-project#156693](https://github.com/llvm/llvm-project/pull/156693), [llvm/llvm-project#200193](https://github.com/llvm/llvm-project/pull/200193) |
+| scalar variables implicitly firstprivate for target | <span class="good">done</span> | | Coverage exists for implicit DSA handling on target (`flang/test/Semantics/OpenMP/implicit-dsa.f90`, `flang/test/Lower/OpenMP/DelayedPrivatization/target-private-implicit-scalar-map.f90`). | [llvm/llvm-project#142783](https://github.com/llvm/llvm-project/pull/142783), [llvm/llvm-project#147442](https://github.com/llvm/llvm-project/pull/147442) |
+| private, firstprivate, and defaultmap on target | <span class="good">done</span> | | Coverage exists across target privatization and defaultmap tests (`flang/test/Lower/OpenMP/defaultmap.f90`, `flang/test/Semantics/OpenMP/defaultmap-clause-v50.f90`). | [llvm/llvm-project#116506](https://github.com/llvm/llvm-project/pull/116506), [llvm/llvm-project#177715](https://github.com/llvm/llvm-project/pull/177715) |
+| linear-modifier for linear clause | <span class="good">done</span> | chichunchen | val, ref, and uval modifier forms are covered in semantics and lowering (`flang/test/Semantics/OpenMP/linear-clause01.f90`-`linear-clause03.f90`, `flang/test/Lower/OpenMP/simd-linear.f90`). | [llvm/llvm-project#187142](https://github.com/llvm/llvm-project/pull/187142) |
+| linear clause on worksharing-loop construct | <span class="good">done</span> | | Lowering coverage exists (`flang/test/Lower/OpenMP/wsloop-linear.f90`). | [llvm/llvm-project#139385](https://github.com/llvm/llvm-project/pull/139385), [llvm/llvm-project#182816](https://github.com/llvm/llvm-project/pull/182816) |
+| is_device_ptr and use_device_ptr clauses | <span class="part">partial</span> | | `use_device_ptr` has semantics and lowering coverage (`flang/test/Semantics/OpenMP/use_device_ptr.f90`, `flang/test/Lower/OpenMP/use-device-ptr-to-use-device-addr.f90`). `is_device_ptr` has semantics coverage (`flang/test/Semantics/OpenMP/target01.f90`) but no dedicated lowering test. | [llvm/llvm-project#67290](https://github.com/llvm/llvm-project/pull/67290), [llvm/llvm-project#109810](https://github.com/llvm/llvm-project/pull/109810), [llvm/llvm-project#113919](https://github.com/llvm/llvm-project/pull/113919) |
+| target enter data and target exit data constructs | <span class="good">done</span> | | Semantics and lowering coverage exists, including nowait and depend on these constructs (`flang/test/Semantics/OpenMP/device-constructs.f90`, `flang/test/Lower/OpenMP/target.f90`). | [llvm/llvm-project#71051](https://github.com/llvm/llvm-project/pull/71051), [llvm/llvm-project#81610](https://github.com/llvm/llvm-project/pull/81610) |
+| simdlen clause on simd construct | <span class="good">done</span> | | Covered in simd lowering tests (`flang/test/Lower/OpenMP/simd.f90`, `flang/test/Lower/OpenMP/distribute-simd.f90`). | [llvm/llvm-project#97819](https://github.com/llvm/llvm-project/pull/97819) |
+| simd clause on ordered construct | <span class="good">done</span> | sshrestha-aa | Semantics and lowering coverage exists (`flang/test/Semantics/OpenMP/ordered-simd.f90`, `flang/test/Lower/OpenMP/ordered-simd.f90`). | [llvm/llvm-project#183379](https://github.com/llvm/llvm-project/pull/183379) |
+| priority clause for task construct | <span class="good">done</span> | | Semantics and lowering coverage exists (`flang/test/Semantics/OpenMP/clause-validity01.f90`, `flang/test/Lower/OpenMP/task.f90`). | [llvm/llvm-project#121052](https://github.com/llvm/llvm-project/pull/121052) |
+| taskloop construct | <span class="part">partial</span> | | Tracked in the OpenMP 5.0 section (where combined forms and lowering gaps are noted). Semantics/lowering coverage exists for core forms. | [llvm/llvm-project#138646](https://github.com/llvm/llvm-project/pull/138646), [llvm/llvm-project#165851](https://github.com/llvm/llvm-project/pull/165851), [llvm/llvm-project#166751](https://github.com/llvm/llvm-project/pull/166751) |
+| nowait and depend clauses on target construct | <span class="good">done</span> | | Lowering coverage exists for nowait and depend on target, target enter data, and target update (`flang/test/Lower/OpenMP/target.f90`). | [llvm/llvm-project#75345](https://github.com/llvm/llvm-project/pull/75345), [llvm/llvm-project#81610](https://github.com/llvm/llvm-project/pull/81610) |
+| hint clause on critical construct | <span class="good">done</span> | | Semantics and lowering coverage exists (`flang/test/Semantics/OpenMP/critical-hint-clause.f90`, `flang/test/Lower/OpenMP/critical.f90`). | [llvm/llvm-project#136311](https://github.com/llvm/llvm-project/pull/136311) |
+| target parallel, target parallel do, and target parallel do simd constructs | <span class="part">partial</span> | | Basic construct coverage exists in lowering (`flang/test/Lower/OpenMP/target.f90`, `flang/test/Lower/OpenMP/compound.f90`), but no dedicated lowering tests for these forms exist; simd implicit linearization gaps apply to the simd variant as for other simd-containing constructs. | [llvm/llvm-project#198783](https://github.com/llvm/llvm-project/pull/198783) |
## OpenMP 5.0
| Feature | Status | Claimed By | Notes | Reviews |
|:--------|:-------|:-----------|:------|:--------|
-| taskloop and combined taskloop forms | <span class="part">partial</span> | | Covered in semantics/lowering tests including `flang/test/Semantics/OpenMP/taskloop01.f90`, `flang/test/Semantics/OpenMP/taskloop-simd01.f90`, `flang/test/Lower/OpenMP/taskloop.f90`, and `flang/test/Lower/OpenMP/master_taskloop_simd.f90`. Lowering for taskloop simd and combined forms is still TODO. | [llvm/llvm-project#138646](https://github.com/llvm/llvm-project/pull/138646), [llvm/llvm-project#165851](https://github.com/llvm/llvm-project/pull/165851), [llvm/llvm-project#187222](https://github.com/llvm/llvm-project/pull/187222) |
-| memory allocators | <span class="part">partial</span> | | Semantics coverage exists in `flang/test/Semantics/OpenMP/allocators01.f90`-`flang/test/Semantics/OpenMP/allocators07.f90`; lowering gaps remain (for example `flang/lib/Lower/OpenMP/OpenMP.cpp` TODO paths). | |
+| combined taskloop constructs (taskloop simd, master taskloop, master taskloop simd) | <span class="part">partial</span> | | This row tracks OpenMP 5.0 combined taskloop forms, with semantics/lowering coverage in `flang/test/Semantics/OpenMP/taskloop-simd01.f90`, `flang/test/Lower/OpenMP/master_taskloop_simd.f90`, and related taskloop lowering tests; some combined-form lowering paths remain TODO. | [llvm/llvm-project#138646](https://github.com/llvm/llvm-project/pull/138646), [llvm/llvm-project#165851](https://github.com/llvm/llvm-project/pull/165851), [llvm/llvm-project#187222](https://github.com/llvm/llvm-project/pull/187222) |
----------------
kparzysz wrote:
> combined taskloop constructs
The document uses "directive" for non-leafs, also it should probably be "compound", since `taskloop simd` is a composite directive. This isn't really important though, and I'm only adding this comment so it doesn't look like I approved it without reading...
https://github.com/llvm/llvm-project/pull/212889
More information about the flang-commits
mailing list