| ! { dg-do run } |
| ! |
| ! PR fortran/45424 |
| ! PR fortran/48820 |
| ! |
| ! Run-time checks for IS_CONTIGUOUS |
| |
| implicit none |
| integer, pointer :: a(:), b(:,:) |
| integer :: i, j, k, s |
| |
| allocate(a(5), b(10,10)) |
| |
| s = 1 |
| if (.true. .neqv. is_contiguous (a(::s))) stop 1 |
| s = 2 |
| if (.false. .neqv. is_contiguous (a(::s))) stop 2 |
| i=5; j=7 |
| if (.true. .neqv. is_contiguous (b(1:i*2,1:j))) stop 3 |
| if (.false. .neqv. is_contiguous (b(1:i,1:j))) stop 4 |
| i=5; j=5; s=1 |
| if (.false. .neqv. is_contiguous (b(i:5:s,i:j*2))) stop 5 |
| |
| ! The following test zero-sized arrays. For the standard, they |
| ! are regarded as noncontiguous. However, gfortran in line with |
| ! other compilers only checks for the strides and thus prints |
| ! .true. or .false. depending on this setting. |
| |
| s = 4 |
| if (.false. .neqv. is_contiguous (a(2:1:s))) stop 6 |
| s = 1 |
| if (.true. .neqv. is_contiguous (a(2:1:s))) stop 7 |
| end |