<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/102939>102939</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [flang][openmp] Bad code for "private" directive with pointers and targets
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            bug,
            flang:openmp
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          psteinfeld
      </td>
    </tr>
</table>

<pre>
    Here's a test program:
```
program bug
  integer, pointer :: pvar
 integer, target :: tvar
  tvar = 2
  pvar => tvar
  !$omp parallel private (pvar, tvar)
  tvar = 1
  pvar => tvar
  !$omp end parallel
  if (pvar/=2) stop 'fail'
  print *, 'ok'
end program
```
I compile this program with `flang-new -fopenmp bug.f90`. When I execute it, I get the output:
```
Fortran STOP: fail
IEEE arithmetic exceptions signaled: INEXACT
```
When I compile and execute the same program with `gfortran -fopenmp bug.f90`, I get the output:
```
ok
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU9GOmzoQ_ZrhZZQIBkLCAw_ZTaKbl3uv1JXaVwMDuGuwZZvs9u8rE5Jtu1uplSI5Hs-cOWeGI5yT3chcwuYBNodITL7XtjTOsxxbVk1U6eZb-Q9bBto6FOjZeTRWd1YMkO4hPkC8hzxefvN1ecZq6q4BRDl67tgCPaLR4WIxVKd7NBdhl6wfkrywHftbjn_Lmf8jpAekW8QsEUiPP2UCJUCZHgwaYYVSrNBYeRGeEWg39w2d5rN4B5_8OTyPzb3FXXD71uQE6YGACnReGwTatkIqoO29g5WjR6B94AO01c_3xxl6mfZHoz5jrQcjFaPvpbul4ov0PUIet0qM3WrkF1y12vA4mLCUdVsEhDV-7nnEM_Ir15NnlD4QOGOYvO8Z9eTN5H-35ZO23ooRPz39939Y0izqSup4PKKw0vcDe1kjv9ZsvNSjw_C5CcVNKDj_e_yyf3z6EHxhdhMnxubOMjBzYuB3Yrt2YfSB1r8Rpp9_CUdNmTZFWoiIy2RLabZL8yKP-rKORS7yJM3aoqpESpXIKG5yUdV5ThnlkSwppizeJZRsaZfka6K6yOI8S7ZUNJuYIYt5EFKtlboMa227SDo3cZnEVKRFpETFys3uJAp2IgJ6BKJ5sZDur0JDeHOIbBlQVtXUOchiJZ13b7heejX7_Fq6OcDmYaneHPBBNFjrhrHVFoFoMQoQYSMt115e-Droxb5u3snVpi6arCp7740LM6UT0KmTvp-qda0HoFMgsRwrY_VXrj3QaVbqgE6L2EtJ3wMAAP___4Zd1g">