| ! { dg-options "-O3 -fdump-tree-lversion-details -fno-frontend-loop-interchange" } |
| |
| ! Test a case in which the outer loop iterates over the inner dimension. |
| ! The options above prevent the frontend from interchanging the loops. |
| |
| subroutine f1(x, limit, step, n) |
| integer :: limit, step, n |
| real :: x(limit, n) |
| do i = 1, limit, step |
| do j = 1, n |
| x(i, j) = 100 |
| end do |
| end do |
| end subroutine f1 |
| |
| subroutine f2(x, n, limit, step) |
| integer :: n, limit, step |
| real :: x(limit, n) |
| do i = 1, n |
| do j = 1, limit, step |
| x(j, i) = 100 |
| end do |
| end do |
| end subroutine f2 |
| |
| ! FIXME: The frontend doesn't give us enough information to tell which loop |
| ! is iterating over the innermost dimension, so we optimistically |
| ! assume the inner one is. |
| ! { dg-final { scan-tree-dump-not {want to version} "lversion" { xfail *-*-* } } } |
| ! { dg-final { scan-tree-dump-not {versioned} "lversion" { xfail *-*-* } } } |