Index: flang/test/Semantics/omp-do01.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do01.f90 @@ -0,0 +1,18 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct +! collapse(n) where n > num of loops + +program omp_do + integer i, j, k + + !ERROR: Not enough do loops for collapsed !$OMP DO + !$omp do collapse(2) + do i = 1, 10 + print *, "hello" + end do + !$omp end do + +end program omp_do Index: flang/test/Semantics/omp-do02.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do02.f90 @@ -0,0 +1,21 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct +! Exit statement terminating !$OMP DO loop + +program omp_do + integer i, j, k + + !$omp do + do i = 1, 10 + do j = 1, 10 + print *, "Hello" + end do + !ERROR: EXIT statement terminating !$OMP DO loop + exit + end do + !$omp end do + +end program omp_do Index: flang/test/Semantics/omp-do03.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do03.f90 @@ -0,0 +1,26 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct +! Semantic error for correct test case + +program omp_do + integer i, j, k + integer :: a(10), b(10) + a = 10 + j = 0 + + !$omp parallel + !$omp do linear(j:1) + do i = 1, 10 + j = j + 1 + b(i) = a(i) * 2.0 + end do + !$omp end do + !$omp end parallel + + print *, j + print *, b + +end program omp_do Index: flang/test/Semantics/omp-do04.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do04.f90 @@ -0,0 +1,20 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct +! The loop iteration variable may not appear in a threadprivate directive. + +program omp_do + integer i, j, k + + !$omp do firstprivate(i) + !ERROR: !$OMP DO iteration variable i is not allowed in threadprivate + do i = 1, 10 + do j = 1, 10 + print *, "Hello" + end do + end do + !$omp end do + +end program omp_do Index: flang/test/Semantics/omp-do05.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do05.f90 @@ -0,0 +1,26 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct +! chunk_size must be a loop invariant integer expression +! with a positive value. + +program omp_do + integer i, j, k + integer :: a(10), b(10) + a = 10 + j = 0 + + !ERROR: INTEGER expression of SCHEDULE clause chunk_size must be positive + !$omp do schedule(static, -1) + do i = 1, 10 + j = j + 1 + b(i) = a(i) * 2.0 + end do + !$omp end do + + print *, j + print *, b + +end program omp_do Index: flang/test/Semantics/omp-do06.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do06.f90 @@ -0,0 +1,21 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL:* + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct +! The ordered clause must be present on the loop construct if any ordered +! region ever binds to a loop region arising from the loop construct. + +program omp_do + integer i, j, k + + !$omp do + do i = 1, 10 + !ERROR: ‘ordered’ region inside a loop region without an ordered clause. + !$omp ordered + call my_func() + !$omp end ordered + end do + !$omp end do + +end program omp_do Index: flang/test/Semantics/omp-do07.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do07.f90 @@ -0,0 +1,24 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL:* + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct +! No statement in the associated loops other than the DO statements +! can cause a branch out of the loops + +program omp_do + integer i, j, k + + !$omp do + do i = 1, 10 + do j = 1, 10 + print *, "Hello" + !ERROR: invalid branch to/from OpenMP structured block + goto 10 + end do + end do + !$omp end do + + 10 stop + +end program omp_do Index: flang/test/Semantics/omp-do08.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do08.f90 @@ -0,0 +1,19 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct + +program omp_do + integer i, j, k + !$omp do collapse(2) + do i = 1, 10 + !ERROR: CYCLE statement to non-innermost collapsed !$OMP DO loop + if (i .lt. 5) cycle + do j = 1, 10 + print *, "Hello" + end do + end do + !$omp end do + +end program omp_do Index: flang/test/Semantics/omp-do09.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do09.f90 @@ -0,0 +1,22 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct +! The do-loop cannot be a DO WHILE or a DO loop without loop control. + +program omp_do + integer i, j, k + i = 0 + + !$omp do + !ERROR: !$OMP DO cannot be a DO WHILE or DO without loop control + do while (i .lt. 10) + do j = 1, 10 + print *, "Hello" + end do + i = i + 1 + end do + !$omp end do + +end program omp_do Index: flang/test/Semantics/omp-do10.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-do10.f90 @@ -0,0 +1,20 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.7.1 Loop Construct +! The do-loop iteration variable must be of type integer. + +program omp_do + real i, j, k + + !$omp do + !ERROR: The do-loop iteration variable must be of type integer. + do i = 1, 10 + do j = 1, 10 + print *, "Hello" + end do + end do + !$omp end do + +end program omp_do Index: flang/test/Semantics/omp-parallell01.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-parallell01.f90 @@ -0,0 +1,24 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.5 parallel construct. +! A program that branches into or out of a parallel region +! is non-conforming. + +program omp_parallel + integer i, j, k + + !$omp parallel + do i = 1, 10 + do j = 1, 10 + print *, "Hello" + !ERROR: invalid branch to/from OpenMP structured block + goto 10 + end do + end do + !$omp end parallel + + 10 stop + +end program omp_parallel Index: flang/test/Semantics/omp-parallell02.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/omp-parallell02.f90 @@ -0,0 +1,25 @@ +! RUN: %S/test_errors.sh %s %t %f18 -fopenmp +! XFAIL: * + +! OpenMP Version 4.5 +! 2.5 parallel construct. +! A program that branches into or out of a parallel region +! is non-conforming. + + +program omp_parallel + integer i, j, k + + !ERROR: invalid entry to OpenMP structured block + goto 10 + + !$omp parallel + do i = 1, 10 + do j = 1, 10 + print *, "Hello" + 10 stop + end do + end do + !$omp end parallel + +end program omp_parallel