================
@@ -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

Reply via email to