[flang-commits] [flang] [OpenMP][Flang] Add "IsolatedFromAbove" trait to omp.target (PR #67164)
via flang-commits
flang-commits at lists.llvm.org
Fri Oct 6 07:44:15 PDT 2023
================
@@ -2433,10 +2502,44 @@ genTargetOp(Fortran::lower::AbstractConverter &converter,
Fortran::parser::OmpClause::Defaultmap>(
currentLocation, llvm::omp::Directive::OMPD_target);
- return genOpWithBody<mlir::omp::TargetOp>(
- converter, eval, currentLocation, outerCombined, &clauseList,
- ifClauseOperand, deviceOperand, threadLimitOperand, nowaitAttr,
- mapOperands);
+ auto captureImplicitMap = [&](const Fortran::semantics::Symbol &sym) {
+ if (llvm::find(mapSymbols, &sym) == mapSymbols.end()) {
+ mlir::Value baseOp = converter.getSymbolAddress(sym);
+ if (!baseOp)
+ if (const auto *details = sym.template detailsIf<
+ Fortran::semantics::HostAssocDetails>()) {
+ baseOp = converter.getSymbolAddress(details->symbol());
+ converter.copySymbolBinding(details->symbol(), sym);
+ }
+
----------------
agozillon wrote:
I have a feeling 3 is perhaps similar to what the EarlyOutliingPass currently does: https://github.com/llvm/llvm-project/blob/e18dca257f81ab8c4d00924b3f403a8dddfdddca/flang/lib/Optimizer/Transforms/OMPEarlyOutlining.cpp#L25 but perhaps I'm wrong, not a bad thing but it is a method we already have in place so it'd be interesting to know if it was a similar approach to 3.
https://github.com/llvm/llvm-project/pull/67164
More information about the flang-commits
mailing list