| ! { dg-do run } |
| |
| ! Test that index vector on lhs of caf-expression works correctly. |
| |
| program pr81773 |
| |
| integer, parameter :: ndim = 5 |
| integer :: i |
| integer :: vec(ndim) = -1 |
| integer :: res(ndim)[*] = [ (i, i=1, ndim) ] |
| type T |
| integer :: padding |
| integer :: dest(ndim) |
| integer :: src(ndim) |
| end type |
| |
| type(T) :: dest |
| type(T), allocatable :: caf[:] |
| |
| vec([ndim, 3, 1]) = res(1:3)[1] |
| if (any (vec /= [ 3, -1, 2, -1, 1])) stop 1 |
| |
| dest = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] ) |
| dest%dest([ 4,3,2 ]) = res(3:5)[1] |
| if (any (dest%dest /= [-1, 5, 4, 3, -1])) stop 2 |
| |
| vec(:) = -1 |
| allocate(caf[*], source = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] )) |
| vec([ 5,3,2 ]) = caf[1]%src(2:4) |
| if (any (vec /= [ -1, 0, 1, -1, 2])) stop 3 |
| end |
| |