1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
|
! { 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
|