Issue |
120708
|
Summary |
[flang][openmp] incorrect firstprivate initialization in omp task
|
Labels |
bug,
flang:openmp
|
Assignees |
|
Reporter |
jeanPerier
|
It looks like firstprivate initialization is not happening as expected in the program below: `i` in the `!omp task` is not given the value of `i` when the task is created (it seems it is given the value of `i` when the task is launched because it tends to be given `5` for instance).
I expect the program below to print "in task: i=..." to print 1, 2,3 and 4 (in any order), but I see 5,5,5,5 (or sometimes 2,3,4,5).
````
subroutine test()
use omp_lib, only : omp_get_thread_num
implicit none
integer :: i
!$omp parallel private(i)
!$omp single
do i = 1,4
print '("outside: i= ",I0," thread_id= ",I0, " &i= "I0)', i, omp_get_thread_num(), loc(i)
!$omp task firstprivate(i)
print '("in task: i= ",I0," thread_id= ",I0, " &i= "I0)', i, omp_get_thread_num(), loc(i)
!$omp end task
end do
!$omp end single
!$omp end parallel
end subroutine
use omp_lib, only : omp_set_dynamic, omp_set_num_threads
call omp_set_dynamic(.false.)
call omp_set_num_threads(4)
call test()
end
````
All of gfortran, nvfortran and ifx print 1,2,3,4 here (in random order of course).
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs