================
@@ -4262,7 +4301,9 @@ genTargetOp(lower::AbstractConverter &converter,
lower::SymMap &symTable,
if (const semantics::Symbol *sym = object.sym())
captureImplicitMap(*sym, /*forceAddressPreserving=*/true);
- lower::pft::visitAllSymbols(eval, captureImplicitMap);
+ forEachParseTreeEval(eval, [&](lower::pft::Evaluation &e) {
+ lower::pft::visitAllSymbols(e, captureImplicitMap);
----------------
MattPD wrote:
At e604e9d and 384d1bb, `flang -fopenmp -fopenmp-version=52 -S -emit-llvm
repro.f90 -o -` aborts on this file:
```fortran
subroutine dm_meta(y)
integer :: y
!$omp metadirective when(implementation={vendor(llvm)}: target
defaultmap(none))
block
y = y + 1
end block
end subroutine
```
With `map(tofrom: y)`, the example compiles. At the [merge
base](https://github.com/llvm/llvm-project/commit/ae7f7ef515657eeb037e1cad045ade1a45cc7951),
Flang leaves this BLOCK outside TARGET.
Flang diagnoses `y` in an explicit TARGET or a delimited metadirective. Could
it diagnose `y` in this form too?
https://github.com/llvm/llvm-project/pull/224431
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits