2015-07-03 Christophe Lyon <christophe.lyon@linaro.org>
[official-gcc.git] / gcc / testsuite / gfortran.dg / goacc / loop-3.f95
blob2a866c7923486764d26795e6922ddc7bc7cd2557
1 ! { dg-do compile }
2 ! { dg-additional-options "-std=f2008" }
4 subroutine test1
5 implicit none
6 integer :: i, j
8 ! !$acc end loop not required by spec
9 !$acc loop
10 do i = 1,5
11 enddo
12 !$acc end loop ! { dg-warning "Redundant" }
14 !$acc loop
15 do i = 1,5
16 enddo
17 j = 1
18 !$acc end loop ! { dg-error "Unexpected" }
20 !$acc parallel
21 !$acc loop
22 do i = 1,5
23 enddo
24 !$acc end parallel
25 !$acc end loop ! { dg-error "Unexpected" }
27 ! OpenACC supports Fortran 2008 do concurrent statement
28 !$acc loop
29 do concurrent (i = 1:5)
30 end do
32 !$acc loop
33 outer_loop: do i = 1, 5
34 inner_loop: do j = 1,5
35 if (i .eq. j) cycle outer_loop
36 if (i .ne. j) exit outer_loop ! { dg-error "EXIT statement" }
37 end do inner_loop
38 end do outer_loop
40 outer_loop1: do i = 1, 5
41 !$acc loop
42 inner_loop1: do j = 1,5
43 if (i .eq. j) cycle outer_loop1 ! { dg-error "CYCLE statement" }
44 end do inner_loop1
45 end do outer_loop1
47 !$acc loop collapse(2)
48 outer_loop2: do i = 1, 5
49 inner_loop2: do j = 1,5
50 if (i .eq. j) cycle outer_loop2 ! { dg-error "CYCLE statement" }
51 if (i .ne. j) exit outer_loop2 ! { dg-error "EXIT statement" }
52 end do inner_loop2
53 end do outer_loop2
54 end subroutine test1