[flang-commits] [flang] [flang][OpenMP][Lower] lower array subscripts for task depend (PR #132994)
via flang-commits
flang-commits at lists.llvm.org
Thu Mar 27 05:48:49 PDT 2025
================
@@ -830,18 +846,46 @@ bool ClauseProcessor::processDepend(mlir::omp::DependClauseOps &result) const {
for (const omp::Object &object : objects) {
assert(object.ref() && "Expecting designator");
+ mlir::Value dependVar;
if (evaluate::ExtractSubstring(*object.ref())) {
TODO(converter.getCurrentLocation(),
"substring not supported for task depend");
} else if (evaluate::IsArrayElement(*object.ref())) {
- TODO(converter.getCurrentLocation(),
- "array sections not supported for task depend");
+ // Array Section
+ SomeExpr expr = *object.ref();
+ if (isVectorSubscript(expr))
+ TODO(converter.getCurrentLocation(),
+ "Vector subscripted array section for task dependency");
+
+ hlfir::EntityWithAttributes entity = convertExprToHLFIR(
+ converter.getCurrentLocation(), converter, expr, symMap, stmtCtx);
+ dependVar = entity.getBase();
+ } else {
+ semantics::Symbol *sym = object.sym();
+ dependVar = converter.getSymbolAddress(*sym);
}
- semantics::Symbol *sym = object.sym();
- const mlir::Value variable = converter.getSymbolAddress(*sym);
- result.dependVars.push_back(variable);
+ // If we pass a mutable box e.g. !fir.ref<!fir.box<!fir.heap<...>>> then
+ // the runtime will use the addres of the box not the address of the data.
----------------
NimishMishra wrote:
Nit: "addres" -> "address"
https://github.com/llvm/llvm-project/pull/132994
More information about the flang-commits
mailing list