[flang-commits] [flang] [flang][OpenMP] Revert array element reduction lowering (PR #215617)
Sairudra More via flang-commits
flang-commits at lists.llvm.org
Tue Aug 11 21:47:47 PDT 2026
================
@@ -903,32 +902,20 @@ static void bindEntryBlockArgs(lower::AbstractConverter &converter,
// llvm::zip_equal(processedSyms, vars, args) asserts equal lengths.
// The matching block argument is silently skipped below.
processedSyms.push_back(nullptr);
- processedObjects.push_back(nullptr);
continue;
}
if (const auto *commonDet =
sym->detailsIf<semantics::CommonBlockDetails>()) {
- for (auto &mem : commonDet->objects()) {
- processedSyms.push_back(&*mem);
- processedObjects.push_back(&object);
- }
+ llvm::transform(commonDet->objects(), std::back_inserter(processedSyms),
+ [&](const auto &mem) { return &*mem; });
} else {
processedSyms.push_back(sym);
- processedObjects.push_back(&object);
}
}
- assert(processedSyms.size() == processedObjects.size());
- for (auto [sym, var, arg, object] :
- llvm::zip_equal(processedSyms, vars, args, processedObjects)) {
+ for (auto [sym, var, arg] : llvm::zip_equal(processedSyms, vars, args)) {
----------------
Saieiei wrote:
Could these task/taskloop cases where the same array participates in reduction and privatization be diagnosed for now? `bindEntryBlockArgs` binds `in_reduction` before `private`/`reduction`, so the later binding can replace the symbol binding established for the reduction object. The `%{{.*}}` checks also dont verify which block argument is used as the designator base. Would a temporary diagnostic be safer until the redesign?
https://github.com/llvm/llvm-project/pull/215617
More information about the flang-commits
mailing list