https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78298
Harald Anlauf <anlauf at gmx dot de> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |anlauf at gmx dot de
--- Comment #2 from Harald Anlauf <anlauf at gmx dot de> ---
Fusing the outer $omp parallel / $omp do makes the code compile, e.g.:
program p
implicit none
integer :: i, j, n
n = 2
! !$omp parallel
! !$omp do
!$omp parallel do
do i = 1, n
!$omp parallel
!$omp do
do j = 1, n
call sub(i)
end do
!$omp end parallel
end do
! !$omp end parallel
!$omp end parallel do
!call unused()
contains
subroutine sub(x)
integer :: x
end subroutine sub
subroutine unused()
i = 0
j = 0
end
end program p
The differences in the dump-tree may be revealing to sb. understanding
the parsing of OpenMP constructs.