[flang-commits] [flang] [llvm] [flang][mlir] Add flang to mlir lowering for dyn_groupprivate (PR #180938)
Sergio Afonso via flang-commits
flang-commits at lists.llvm.org
Tue May 12 08:48:40 PDT 2026
================
@@ -876,6 +876,74 @@ bool ClauseProcessor::processThreadLimit(
return false;
}
+bool ClauseProcessor::processDynGroupprivate(
+ lower::StatementContext &stmtCtx,
+ mlir::omp::DynGroupprivateClauseOps &result) const {
+ using DynGroupprivate = omp::clause::DynGroupprivate;
+
+ // OpenMP 6.1 allows the `dyn_groupprivate` clause to appear more than once
+ // on the same construct (with distinct access-group modifiers). Semantics
+ // already rejects two clauses sharing the same access-group, but multiple
+ // clauses with different access-groups are spec-legal. The current MLIR
+ // representation (`mlir::omp::DynGroupprivateClauseOps`) and the OMPIRBuilder
+ // only support a single set of modifiers + size, so reject the multi-clause
+ // form up-front.
+ unsigned count = 0;
+ parser::CharBlock duplicateSource;
+ findRepeatableClause<DynGroupprivate>(
+ [&](const DynGroupprivate &, const parser::CharBlock &source) {
+ if (++count == 2)
+ duplicateSource = source;
+ });
+ if (count > 1) {
+ TODO(converter.genLocation(duplicateSource),
+ "multiple dyn_groupprivate clauses on the same construct");
+ }
+
+ if (auto *clause = findUniqueClause<DynGroupprivate>()) {
+ fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder();
+ mlir::MLIRContext *context = firOpBuilder.getContext();
+
+ // Process AccessGroup modifier (cgroup)
----------------
skatrak wrote:
```suggestion
// Process AccessGroup modifier (cgroup).
```
https://github.com/llvm/llvm-project/pull/180938
More information about the flang-commits
mailing list