| ! { dg-do compile } |
| ! { dg-options "-O -fdump-tree-fre1" } |
| |
| module test_module |
| integer, parameter :: r=10 |
| integer :: data(r, r), block(r, r, r) |
| contains |
| recursive subroutine foo(arg) |
| integer, intent(in) :: arg |
| integer :: loop, x(r), y(r) |
| |
| where(data(arg, :) /= 0) |
| x = data(arg, :) |
| y = l |
| elsewhere |
| x = 1 |
| y = r |
| end where |
| |
| do loop = x(1), y(1) |
| if(block(arg, 1, loop) <= 0) cycle |
| block(arg, 1:4, loop) = block(arg, 1:4, i1) + 1 |
| call foo(arg + 2) |
| block(arg, 1:4, loop) = block(arg, 1:4, i1) + 10 |
| end do |
| end subroutine foo |
| |
| end module test_module |
| end program |
| |
| ! { dg-final { scan-tree-dump-times "= \\*arg_\[0-9\]+\\(D\\);" 1 "fre1" } } |