blob: 28942ff3ca0b5ba3f997db98b8786c23487d49ed [file] [log] [blame]
! { dg-do run }
!
! PR fortran/18918
!
! this_image(coarray) run test,
! expecially for num_images > 1
!
! Tested are values up to num_images == 8,
! higher values are OK, but not tested for
!
implicit none
integer :: a(1)[2:2, 3:4, 7:*]
integer :: b(:)[:, :,:]
allocatable :: b
integer :: i
if (this_image(A, dim=1) /= 2) STOP 1
i = 1
if (this_image(A, dim=i) /= 2) STOP 2
select case (this_image())
case (1)
if (this_image(A, dim=2) /= 3) STOP 3
if (this_image(A, dim=3) /= 7) STOP 4
i = 2
if (this_image(A, dim=i) /= 3) STOP 5
i = 3
if (this_image(A, dim=i) /= 7) STOP 6
if (any (this_image(A) /= [2,3,7])) STOP 7
case (2)
if (this_image(A, dim=2) /= 4) STOP 8
if (this_image(A, dim=3) /= 7) STOP 9
i = 2
if (this_image(A, dim=i) /= 4) STOP 10
i = 3
if (this_image(A, dim=i) /= 7) STOP 11
if (any (this_image(A) /= [2,4,7])) STOP 12
case (3)
if (this_image(A, dim=2) /= 3) STOP 13
if (this_image(A, dim=3) /= 8) STOP 14
i = 2
if (this_image(A, dim=i) /= 3) STOP 15
i = 3
if (this_image(A, dim=i) /= 8) STOP 16
if (any (this_image(A) /= [2,3,8])) STOP 17
case (4)
if (this_image(A, dim=2) /= 4) STOP 18
if (this_image(A, dim=3) /= 8) STOP 19
i = 2
if (this_image(A, dim=i) /= 4) STOP 20
i = 3
if (this_image(A, dim=i) /= 8) STOP 21
if (any (this_image(A) /= [2,4,8])) STOP 22
case (5)
if (this_image(A, dim=2) /= 3) STOP 23
if (this_image(A, dim=3) /= 9) STOP 24
i = 2
if (this_image(A, dim=i) /= 3) STOP 25
i = 3
if (this_image(A, dim=i) /= 9) STOP 26
if (any (this_image(A) /= [2,3,9])) STOP 27
case (6)
if (this_image(A, dim=2) /= 4) STOP 28
if (this_image(A, dim=3) /= 9) STOP 29
i = 2
if (this_image(A, dim=i) /= 4) STOP 30
i = 3
if (this_image(A, dim=i) /= 9) STOP 31
if (any (this_image(A) /= [2,4,9])) STOP 32
case (7)
if (this_image(A, dim=2) /= 3) STOP 33
if (this_image(A, dim=3) /= 10) STOP 34
i = 2
if (this_image(A, dim=i) /= 3) STOP 35
i = 3
if (this_image(A, dim=i) /= 10) STOP 36
if (any (this_image(A) /= [2,3,10])) STOP 37
case (8)
if (this_image(A, dim=2) /= 4) STOP 38
if (this_image(A, dim=3) /= 10) STOP 39
i = 2
if (this_image(A, dim=i) /= 4) STOP 40
i = 3
if (this_image(A, dim=i) /= 10) STOP 41
if (any (this_image(A) /= [2,4,10])) STOP 42
end select
allocate (b(3)[-1:0,2:4,*])
select case (this_image())
case (1)
if (this_image(B, dim=1) /= -1) STOP 43
if (this_image(B, dim=2) /= 2) STOP 44
if (this_image(B, dim=3) /= 1) STOP 45
i = 1
if (this_image(B, dim=i) /= -1) STOP 46
i = 2
if (this_image(B, dim=i) /= 2) STOP 47
i = 3
if (this_image(B, dim=i) /= 1) STOP 48
if (any (this_image(B) /= [-1,2,1])) STOP 49
case (2)
if (this_image(B, dim=1) /= 0) STOP 50
if (this_image(B, dim=2) /= 2) STOP 51
if (this_image(B, dim=3) /= 1) STOP 52
i = 1
if (this_image(B, dim=i) /= 0) STOP 53
i = 2
if (this_image(B, dim=i) /= 2) STOP 54
i = 3
if (this_image(B, dim=i) /= 1) STOP 55
if (any (this_image(B) /= [0,2,1])) STOP 56
case (3)
if (this_image(B, dim=1) /= -1) STOP 57
if (this_image(B, dim=2) /= 3) STOP 58
if (this_image(B, dim=3) /= 1) STOP 59
i = 1
if (this_image(B, dim=i) /= -1) STOP 60
i = 2
if (this_image(B, dim=i) /= 3) STOP 61
i = 3
if (this_image(B, dim=i) /= 1) STOP 62
if (any (this_image(B) /= [-1,3,1])) STOP 63
case (4)
if (this_image(B, dim=1) /= 0) STOP 64
if (this_image(B, dim=2) /= 3) STOP 65
if (this_image(B, dim=3) /= 1) STOP 66
i = 1
if (this_image(B, dim=i) /= 0) STOP 67
i = 2
if (this_image(B, dim=i) /= 3) STOP 68
i = 3
if (this_image(B, dim=i) /= 1) STOP 69
if (any (this_image(B) /= [0,3,1])) STOP 70
case (5)
if (this_image(B, dim=1) /= -1) STOP 71
if (this_image(B, dim=2) /= 4) STOP 72
if (this_image(B, dim=3) /= 1) STOP 73
i = 1
if (this_image(B, dim=i) /= -1) STOP 74
i = 2
if (this_image(B, dim=i) /= 4) STOP 75
i = 3
if (this_image(B, dim=i) /= 1) STOP 76
if (any (this_image(B) /= [-1,4,1])) STOP 77
case (6)
if (this_image(B, dim=1) /= 0) STOP 78
if (this_image(B, dim=2) /= 4) STOP 79
if (this_image(B, dim=3) /= 1) STOP 80
i = 1
if (this_image(B, dim=i) /= 0) STOP 81
i = 2
if (this_image(B, dim=i) /= 4) STOP 82
i = 3
if (this_image(B, dim=i) /= 1) STOP 83
if (any (this_image(B) /= [0,4,1])) STOP 84
case (7)
if (this_image(B, dim=1) /= -1) STOP 85
if (this_image(B, dim=2) /= 2) STOP 86
if (this_image(B, dim=3) /= 2) STOP 87
i = 1
if (this_image(B, dim=i) /= -1) STOP 88
i = 2
if (this_image(B, dim=i) /= 2) STOP 89
i = 3
if (this_image(B, dim=i) /= 2) STOP 90
if (any (this_image(B) /= [-1,2,2])) STOP 91
case (8)
if (this_image(B, dim=1) /= 0) STOP 92
if (this_image(B, dim=2) /= 2) STOP 93
if (this_image(B, dim=3) /= 2) STOP 94
i = 1
if (this_image(B, dim=i) /= 0) STOP 95
i = 2
if (this_image(B, dim=i) /= 2) STOP 96
i = 3
if (this_image(B, dim=i) /= 2) STOP 97
if (any (this_image(B) /= [0,2,2])) STOP 98
end select
end