<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/74273>74273</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang][OpenMP] Incorrect execution result of using statement function in task construct
</td>
</tr>
<tr>
<th>Labels</th>
<td>
openmp,
flang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ohno-fj
</td>
</tr>
</table>
<pre>
```
Version of flang-new : 18.0.0(770dc47659d41a5ca7b7daf5b3134c900ca8c33d)
```
When `statement function` is used within `task` construct, such as in an attached program, the value of the variable (iaa) used in `statement function` does not look like `firstprivate` after `task` construct ends.
If a function is used directly instead of `statement function`, the value of the variable is correct.
The following are the test program, Flang-new, Gfortran and ifort compilation/execution result.
:
```fortran
program main
integer prv
if(i)=ifun(iaa)
prv=1; iaa=1; ii=1
!$omp parallel shared(prv)
!$omp task default(firstprivate)
prv = prv + 1
ii=if(ii)
! ii=ifun(iaa) ! OK if not statement function
!$omp end task
write(6,*) "prv = ", prv, " iaa = ", iaa
if (iaa.ne.1) write(6,*) "NG : iaa = ", iaa
!$omp end parallel
end program main
function ifun(j)
j=100; ifun=1
end function ifun
```
```
$ export OMP_NUM_THREADS=2; flang-new -fopenmp snf_emski_omp_01_2.f90; ./a.out
prv = 1 iaa = 1
prv = 1 iaa = 100
NG : iaa = 100
$
```
```
$ export OMP_NUM_THREADS=2; gfortran -fopenmp snf_emski_omp_01_2.f90; ./a.out
prv = 1 iaa = 1
prv = 1 iaa = 1
$
```
```
$ export OMP_NUM_THREADS=2; ifort -qopenmp snf_emski_omp_01_2.f90; ./a.out
prv = 1 iaa = 1
prv = 1 iaa = 1
$
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vt9v2zYQ_mvol4MFivplP_jBieeuGNIUW7c9GrR4tJhQpEZSSfvfD5RsxXaSosC6ILBE3vHu--4jeeLeq4NBXJHihhSbGe9DY93KNsbO5cNsb8W3FSnp8Z9uCF3_hc4ra8BKkJqbw9zgM5BsDekioQklbFFVVNR5VRZLkae8qHm1rwSXxT5Ls7xeUlrzRZ1lgrDlGPIqw_j7d4MGSEl94AFbNAFkb-qgrCElBeWh9yjgWYVGDX6B-8doqa3xwfV1IOwWfF83wD0oA9wAD4HXDQronD043kaP0CA8cd1jJDQOnOJ7jUDYQnFO2HLMpL6DRlj0YGwAbe0jaPWI0Vcq50Pn1BMPGL24DOjehApohE9G3h8l8Cn4xFMoh3XQ30AZH5CLiPY9ON-npTzU1sVoyXm5vzQI0mptn5U5AHc4rArow3m1tifF4-CDtC64WFcjQMUB1LbtlOYDELbFr1j3Aw2HvteXCUm2vlL_GG6cPSaFlqvjDIAyAQ_ooHNP05SMMsWdlG2U7M0k2skh-mablGQ3EA2nVzW8jflZSlhu2w467rjWqME33KEgbBFXT7t08ov6gUDJex0IW1zofJEZSLYZn-wG0gmzGsBGqOo8-mQ5owEQDfe_gZLDBntD8CtwaMQA8JTt2akIa1ESdkvYOsYkjJ3AEcailAPP2ziKVTq3RBhTrY9nIjGYpDHQ27E_fRjug_cCXUI91Xy0DTOvlB9_X87EWKCHs1o_RDkpHaSN1kncGPBy4fs3zvUkywG_dnFb39993n3682735dfff1lv_iDZhsVUL_ffXNoOTduBN3KHrX9UO9t2O5ruWCKXA66EsC1PbB-OmE8KQNT9WKppj7xljPxG61WBXyyE5T-T3-F0wP8LvZe_c6Jnsz-0IP1fCI6X1vyfn8zuxyi9rsF77GZilYlltuQzXKUVTcsyWyzLWbPCfYWskKUsclqUpahZJtOFTFNelpXI6UytGGVZymhOc5YXZVKXKaai3pf7rEoxEySn2HKlE62f2sS6w0x53-OqylmVzTTfo_bDxwFjY5HG00wYGzY_ydbSWRPQiGgoNjO3ipHm-_7gSU618sG_xA4q6OFbY-gjpNiQ4ua-Q3P3mRQb-GiOjQmuG0dsYr2Pjen1_Rcb83AhT9101ju9akLofOwxbEvY9qBC0--T2raEbSOc42PeOfuA8VthO_D2hG0H6v8GAAD__2WmoO0">