| ! RUN: %python %S/test_folding.py %s %flang_fc1 |
| ! Test folding of IS_CONTIGUOUS on simply contiguous items (9.5.4) |
| ! When IS_CONTIGUOUS() is constant, it's .TRUE. |
| |
| module m |
| real, target :: hosted(2) |
| contains |
| function f() |
| real, pointer, contiguous :: f(:) |
| f => hosted |
| end function |
| subroutine test(arr1, arr2, arr3, mat) |
| real, intent(in) :: arr1(:), arr2(10), mat(10, 10) |
| real, intent(in), contiguous :: arr3(:) |
| real :: scalar |
| logical, parameter :: test_isc01 = is_contiguous(0) |
| logical, parameter :: test_isc02 = is_contiguous(scalar) |
| logical, parameter :: test_isc03 = is_contiguous(scalar + scalar) |
| logical, parameter :: test_isc04 = is_contiguous([0, 1, 2]) |
| logical, parameter :: test_isc05 = is_contiguous(arr1 + 1.0) |
| logical, parameter :: test_isc06 = is_contiguous(arr2) |
| logical, parameter :: test_isc07 = is_contiguous(mat) |
| logical, parameter :: test_isc08 = is_contiguous(mat(1:10,1)) |
| logical, parameter :: test_isc09 = is_contiguous(arr2(1:10:1)) |
| logical, parameter :: test_isc10 = is_contiguous(arr3) |
| logical, parameter :: test_isc11 = is_contiguous(f()) |
| end subroutine |
| end module |