[PATCH 1/4] [GOMP4] [Fortran] OpenACC 1.0+ support in fortran front-end
Ilmir Usmanov
i.usmanov@samsung.com
Fri Mar 7 10:44:00 GMT 2014
Hi Tobias!
Thanks a lot for your review!
> !$acc loop
> outer_loop: do i = 1, n
> inner_loop: do j = 1,m
> ! ...
> cycle outer_loop
> exit outer_loop
> end do inner_loop
> end do outer_loop
>
> That's a new Fortran 2008 feature that CYCLE and EXIT can leave the
> inner DO loop.
>
I added the following to test suite:
> !$acc loop
> outer_loop: do i = 1, 5
> inner_loop: do j = 1,5
> if (i .eq. j) cycle outer_loop
> if (i .ne. j) exit outer_loop ! { dg-error "EXIT statement" }
> end do inner_loop
> end do outer_loop
>
> outer_loop1: do i = 1, 5
> !$acc loop
> inner_loop1: do j = 1,5
> if (i .eq. j) cycle outer_loop1 ! { dg-error "CYCLE statement" }
> end do inner_loop1
> end do outer_loop1
>
> !$acc loop collapse(2)
> outer_loop2: do i = 1, 5
> inner_loop2: do j = 1,5
> if (i .eq. j) cycle outer_loop2 ! { dg-error "CYCLE statement" }
> if (i .ne. j) exit outer_loop2 ! { dg-error "EXIT statement" }
> end do inner_loop2
> end do outer_loop2
All cases pass.
The second one passes due to check of structured blocks:
> if (o != NULL)
> {
> gfc_error ("%s statement at %C leaving OpenMP structured block",
> gfc_ascii_statement (st));
> return MATCH_ERROR;
> }
So, I needed to change error message.
Also I fixed checks of polymofphic type and indentation.
OK for gomp4 branch?
--
Ilmir.
More information about the Fortran
mailing list