<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/86907>86907</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang][OpenMP] Issues in copyprivate
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:openmp
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
luporl
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
harishch4
</td>
</tr>
</table>
<pre>
Here is a list of test cases that are failing in flang-new but are working in other compilers.
Godbolt [link](https://godbolt.org/z/b3hKvKjEj)
```
subroutine test1
use omp_lib
implicit none
character xz
common/c/xz
!$omp threadprivate(/c/)
!$omp parallel num_threads(4)
!$omp single
xz = 'c'
!$omp end single copyprivate(/c/)
!$omp end parallel
end
error: COMMON block must be declared in the same scoping unit in which the OpenMP directive or clause appears
!$omp end single copyprivate(/c/)
```
```
!fails in gfortran but all other compilers accepting this
subroutine test2
real z
!$omp parallel private(z) num_threads(2)
!$omp single
z = -2
!$omp end single copyprivate(z,z)
!$omp end parallel
end
```
```
subroutine test3
use omp_lib
!$omp parallel private(xz) num_threads(2)
xz = f()
!$omp end parallel
contains
function f() result(rz)
!$omp single
rz = 42
!$omp end single copyprivate(rz)
end function
end subroutine
error: COPYPRIVATE variable 'rz' is not PRIVATE or THREADPRIVATE in outer context
!$omp end single copyprivate(rz)
^^
```
```
subroutine test4
use omp_lib
implicit none
call test
contains
subroutine test
real, pointer :: xz
!$omp parallel private(xz) num_threads(2)
xz => fz()
!$omp end parallel
end subroutine
function fz()
real, pointer :: fz
nullify (fz)
!$omp single
allocate (fz)
fz = 42
!$omp end single copyprivate(fz)
end function
end subroutine
error: COPYPRIVATE variable 'fz' is not PRIVATE or THREADPRIVATE in outer context
!$omp end single copyprivate(fz)
^^
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8lt1vozgQwP-aycuoFTGwIQ95SJvmdrXqtVqtTrqnlTFDcGtsZJt-5K8_GeiSck2_TroIKcLzwcz4N_Zw5-ROE60gPQPGVNsYq4AxSDcz3vrK2FXFrXSVqJJZborH1VeyhNIhRyWdR1OiJ-dRcEcOfcU9cktYcqmk3qHUWCqudyea7jFve-G9sbeD0PiKLApTN1KRdacQbSBa_2GK3CiPkJ4pqW8h3QDLKu8bB_Ea2BbYdternBq7A7bdA9vmcfX97vvNxQ2wZe8GvkTD0726Nrem9VJTF_K8X0VEbB2hqZtfSubjoqwbJYX0qI2mcVlU3HLhyeLD_mDV1LXRwLYC2Pa3ANgcWGLqBn1liReNlXfcE7Bs0PwdavAxajfccqVIoW7rX72pA5Ylo_qo66TeqYP4wu9hjxBvENhCAFs8l42WpIvBGoVpHt8bXDB7CrCXky6Ggvev1hoL8RrPry4vr_7EXBlxi3XrPOaEBQnFLRVh931F6HhN6IRpAhGtlj4I7ispqk581ZC-vMZCWhJe3hEai0LxsGO8aYhb9zy9TyU4AeXlRTYPULsQ3q401luue6KVmmKMXAhqfMjIV9Idep1AyMboLXGF-1dxGDPYA1tO6GBH9uslQHo-Tti_aDpasj2w8_1HiMD3l3ZSk_iNxny1MA9vVmZojrLj4J35CKM9l_qAtbLVwkujn_ygJdcqDyyzz8v09mbYPqCEfbhRDz8VlJ6CGjdhLO2RDr3--_rHt7_WPy_wjlvJc0Xh2AiOF-GU18bjk4Kx-PPrj4v15mkhnN-t78DXnh78JzrxMANIL8LzCjbvgCd5DZ5jR3po4WB8bLMn3xgEoWGBnWNjpA5VCHdTvH52LfxXXHtWIb7Acj_l9S1mg_wlBA7QfdHnkbTKSVq6VUqWjwgsK_fvvZi4UkZwT1Or4Vd-uhMmzj7SDPhmN5T_VzeUH-mGWbGKi2W85DNazRfz-ZeIzaNoVq3KgpJllGdlzvIo47ng80WSLHOWZUsqF9lMrljEkihmWZRG8yQ6FXnK5wvOSaQ5lWkGSUQ1l-pUqbs6jFgz6VxLq-zLMlrMFM9JuWFi7KY7iNemIV03w-RoV8HwJG93DpIozIludOWlV928ue1M0w2kZ_0tD-kGv4UPdZfsQWlmrVWryfwnfdXmp8LUwLbB9_B30lhzQ8ID23YxO2DbLux_AgAA___8iTGw">