blob: c97af1ddb8a249aed706332e13b1be4eeb54e239 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
! { dg-do compile }
! { dg-options "-fopenmp -std=gnu" }
subroutine foo
integer :: i, j
integer, dimension (30) :: a
double precision :: d
i = 0
!$omp do private (i)
do 100 ! { dg-error "cannot be a DO WHILE or DO without loop control" }
if (i .gt. 0) exit ! { dg-error "EXIT statement" }
100 i = i + 1
i = 0
!$omp do private (i)
do ! { dg-error "cannot be a DO WHILE or DO without loop control" }
if (i .gt. 0) exit ! { dg-error "EXIT statement" }
i = i + 1
end do
i = 0
!$omp do private (i)
do 200 while (i .lt. 4) ! { dg-error "cannot be a DO WHILE or DO without loop control" }
200 i = i + 1
!$omp do private (i)
do while (i .lt. 8) ! { dg-error "cannot be a DO WHILE or DO without loop control" }
i = i + 1
end do
!$omp do
do 300 d = 1, 30, 6 ! { dg-warning "Deleted feature: Loop variable" }
i = d
300 a(i) = 1
!$omp do
do d = 1, 30, 5 ! { dg-warning "Deleted feature: Loop variable" }
i = d
a(i) = 2
end do
!$omp do
do i = 1, 30
if (i .eq. 16) exit ! { dg-error "EXIT statement" }
end do
!$omp do
outer: do i = 1, 30
do j = 5, 10
if (i .eq. 6 .and. j .eq. 7) exit outer ! { dg-error "EXIT statement" }
end do
end do outer
last: do i = 1, 30
!$omp parallel
if (i .eq. 21) exit last ! { dg-error "leaving OpenMP structured block" }
!$omp end parallel
end do last
!$omp parallel do shared (i)
do i = 1, 30, 2 ! { dg-error "iteration variable present on clause" }
a(i) = 5
end do
!$omp end parallel do
end subroutine
! { dg-error "iteration variable must be of type integer" "" { target *-*-* } 27 }
! { dg-error "iteration variable must be of type integer" "" { target *-*-* } 31 }
|