! { 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