| ! { dg-do compile } |
| ! |
| program foo |
| |
| implicit none |
| |
| integer i |
| integer :: j = 0 |
| real y(4) |
| |
| do concurrent(i=1:4) |
| y(i) = bar(i) ! { dg-error "Reference to impure function" } |
| call bla(i) ! { dg-error "Subroutine call to" } |
| end do |
| |
| do concurrent(i=1:4) |
| block |
| y(i) = bar(i) ! { dg-error "Reference to impure function" } |
| call bla(i) ! { dg-error "Subroutine call at" } |
| end block |
| end do |
| |
| contains |
| |
| impure function bar(i) |
| real bar |
| integer, intent(in) :: i |
| j = j + i |
| bar = j |
| end function bar |
| |
| impure subroutine bla (i) |
| integer, intent(in) :: i |
| j = j + i |
| end subroutine bla |
| |
| end program foo |