Yashaswini 20e3a6cb62 Add Semantic check for Flang OpenMP 4.5 - 2.7.1 Do Loop restrictions.
Implementation of Do loop iteration variable check, Do while loop check, Do loop cycle restrictions.
Also to check whether the ordered clause is present on the loop construct if any ordered region ever
 binds to a loop region arising from the loop construct.

Files:

check-omp-structure.h
check-omp-structure.cpp
resolve-directives.cpp

Testcases:

omp-do06-positivecases.f90
omp-do06.f90
omp-do08.f90
omp-do09.f90
omp-do10.f90
omp-do11.f90
omp-do12.f90
omp-do13.f90
omp-do14.f90
omp-do15.f90
omp-do16.f90
omp-do17.f90

Reviewed by: Kiran Chandramohan @kiranchandramohan , Valentin Clement @clementval

Differential Revision: https://reviews.llvm.org/D92732
2021-02-15 18:39:14 +05:30

37 lines
891 B
Fortran

! RUN: %S/test_symbols.sh %s %t %f18 -fopenmp
! OpenMP Version 4.5
! 2.7.1 Do Loop Constructs
!DEF: /omp_do MainProgram
program omp_do
!DEF: /omp_do/i ObjectEntity INTEGER(4)
!DEF: /omp_do/j ObjectEntity INTEGER(4)
!DEF: /omp_do/k ObjectEntity INTEGER(4)
integer i, j, k
!$omp do
!DEF: /omp_do/Block1/i (OmpPrivate, OmpPreDetermined) HostAssoc INTEGER(4)
do i=1,10
!REF: /omp_do/j
do j=1,10
!REF: /omp_do/Block1/i
!REF: /omp_do/j
print *, "it", i, j
end do
end do
!$omp end do
end program omp_do
!DEF: /omp_do2 MainProgram
program omp_do2
!DEF: /omp_do2/i ObjectEntity INTEGER(4)
!DEF: /omp_do2/k ObjectEntity INTEGER(4)
integer :: i = 0, k
!$omp do
!DEF: /omp_do2/Block1/i (OmpPrivate, OmpPreDetermined) HostAssoc INTEGER(4)
do i=1,10
!REF: /omp_do2/Block1/i
print *, "it", i
end do
!$omp end do
end program omp_do2