[flang-commits] [flang] [flang][OpenMP] Support user-defined declare reduction with derived types (PR #184897)
Tom Eccles via flang-commits
flang-commits at lists.llvm.org
Tue Mar 24 04:22:02 PDT 2026
================
@@ -527,18 +410,20 @@ bool ClauseProcessor::processInitializer(
"OpenMP reduction allocation for dynamic length character");
}
}
- // If ompOrig is already a reference, we can use it directly
- if (fir::isa_ref_type(ompOrigType)) {
- addr = ompOrig;
+ // For by-ref reductions, omp_priv maps to privArg (the private
+ // allocation) and omp_orig maps to moldArg (the original).
+ if (name == "omp_priv" && privArg) {
+ addr = privArg;
+ } else if (fir::isa_ref_type(moldArgType)) {
+ addr = moldArg;
} else {
- addr = builder.createTemporary(loc, ompOrigType);
- fir::StoreOp::create(builder, loc, ompOrig, addr);
+ addr = builder.createTemporary(loc, moldArgType);
+ fir::StoreOp::create(builder, loc, moldArg, addr);
}
----------------
tblah wrote:
Do we still need this part now that the mold and allocated private variable are disambiguated?
https://github.com/llvm/llvm-project/pull/184897
More information about the flang-commits
mailing list