[Mlir-commits] [flang] [mlir] [mlir][flang][OpenMP] Select iterators per locator and allow multi-block regions (PR #227454)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Sun Oct 11 20:08:24 PDT 2026
================
@@ -1046,62 +1042,49 @@ bool ClauseProcessor::processAffinity(
.getResult();
};
- llvm::SmallVector<IteratorRange> iteratorRanges;
- llvm::SmallPtrSet<const Fortran::semantics::Symbol *, 4> ivSyms;
-
- auto &iteratorModifier =
- std::get<std::optional<omp::clause::Iterator>>(clause.t);
- collectIteratorIVs(clause, converter, stmtCtx, iteratorRanges, ivSyms);
+ auto iteratorRanges = lowerIteratorRanges(clause, converter, stmtCtx);
TodoLocators(clauseLocation, objects);
-
- for (const omp::Object &object : objects) {
+ for (const omp::Object &object : objects)
+ if (object.ref() && evaluate::HasVectorSubscript(*object.ref()))
+ TODO(clauseLocation, "vector subscript in AFFINITY clause");
+
+ auto genEntry = [&](const omp::Object &object,
+ lower::StatementContext &localStmtCtx) {
+ mlir::Value addr =
+ genAffinityAddr(converter, object, localStmtCtx, clauseLocation);
llvm::SmallVector<mlir::Value> bounds;
std::stringstream asFortran;
- if (iteratorModifier.has_value() &&
- hasIteratorIVReference(object, ivSyms)) {
+ fir::factory::AddrAndBoundsInfo info =
+ lower::gatherDataOperandAddrAndBounds<mlir::omp::MapBoundsOp,
----------------
MattPD wrote:
The reported integer-component locator now stops with the intended not-yet-implemented diagnostic. Substring locators with array-valued parents still abort.
https://github.com/llvm/llvm-project/pull/227454
More information about the Mlir-commits
mailing list