Issue 140732
Summary [flang][OpenMP] Missing pre-determined DSA for static duration variables
Labels flang:openmp
Assignees
Reporter tblah
    ```
module test_mod
  complex :: tm3a/(0,0)/
contains
  subroutine f4()
    !$omp task
      !$omp task
        tm3a = (1, 2)
      !$omp end task
 !$omp end task
  !$omp taskwait
  print *,tm3a
  end subroutine
end module

program main
  use test_mod
  call f4()
end program
```

```
flang -fopenmp test.f90 -o out && ./out
```

This should print `(1, 2)` not `(0, 0)`. The problem that flang is currently setting `tm3a` to FIRSTPRIVATE.

The relevant section is 7.1.1 of [OpenMP 6.0](https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-6-0.pdf).

There is one rule saying that variables with static storage duration are **predetermined** as SHARED. Another rule for **implicitly determined** DSA, "in a task-generating construct, if no default clause is present, a variable for which the data-sharing attribute is not determined by the rules above is firstprivate".

My interpretation of this is that the rule for predetermined DSA takes precedence and `tm3a` should be SHARED.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to