OSDN Git Service

2011-05-03 Tobias Burnus <burnus@net-b.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / coarray / this_image_1.f90
1 ! { dg-do run }
2 ! { dg-options "-fcoarray=lib -lcaf_single" }
3 !
4 ! PR fortran/18918
5 !
6 ! this_image(coarray) run test,
7 ! expecially for num_images > 1
8 !
9 ! Tested are values up to num_images == 8,
10 ! higher values are OK, but not tested for
11 !
12 implicit none
13 integer :: a(1)[2:2, 3:4, 7:*]
14 integer :: b(:)[:, :,:]
15 allocatable :: b
16 integer :: i
17
18 if (this_image(A, dim=1) /= 2) call abort()
19 i = 1
20 if (this_image(A, dim=i) /= 2) call abort()
21
22 select case (this_image())
23   case (1)
24     if (this_image(A, dim=2) /= 3) call abort()
25     if (this_image(A, dim=3) /= 7) call abort()
26     i = 2
27     if (this_image(A, dim=i) /= 3) call abort()
28     i = 3
29     if (this_image(A, dim=i) /= 7) call abort()
30     if (any (this_image(A) /= [2,3,7])) call abort()
31
32   case (2)
33     if (this_image(A, dim=2) /= 4) call abort()
34     if (this_image(A, dim=3) /= 7) call abort()
35     i = 2
36     if (this_image(A, dim=i) /= 4) call abort()
37     i = 3
38     if (this_image(A, dim=i) /= 7) call abort()
39     if (any (this_image(A) /= [2,4,7])) call abort()
40
41   case (3)
42     if (this_image(A, dim=2) /= 3) call abort()
43     if (this_image(A, dim=3) /= 8) call abort()
44     i = 2
45     if (this_image(A, dim=i) /= 3) call abort()
46     i = 3
47     if (this_image(A, dim=i) /= 8) call abort()
48     if (any (this_image(A) /= [2,3,8])) call abort()
49
50   case (4)
51     if (this_image(A, dim=2) /= 4) call abort()
52     if (this_image(A, dim=3) /= 8) call abort()
53     i = 2
54     if (this_image(A, dim=i) /= 4) call abort()
55     i = 3
56     if (this_image(A, dim=i) /= 8) call abort()
57     if (any (this_image(A) /= [2,4,8])) call abort()
58
59   case (5)
60     if (this_image(A, dim=2) /= 3) call abort()
61     if (this_image(A, dim=3) /= 9) call abort()
62     i = 2
63     if (this_image(A, dim=i) /= 3) call abort()
64     i = 3
65     if (this_image(A, dim=i) /= 9) call abort()
66     if (any (this_image(A) /= [2,3,9])) call abort()
67
68   case (6)
69     if (this_image(A, dim=2) /= 4) call abort()
70     if (this_image(A, dim=3) /= 9) call abort()
71     i = 2
72     if (this_image(A, dim=i) /= 4) call abort()
73     i = 3
74     if (this_image(A, dim=i) /= 9) call abort()
75     if (any (this_image(A) /= [2,4,9])) call abort()
76
77   case (7)
78     if (this_image(A, dim=2) /= 3) call abort()
79     if (this_image(A, dim=3) /= 10) call abort()
80     i = 2
81     if (this_image(A, dim=i) /= 3) call abort()
82     i = 3
83     if (this_image(A, dim=i) /= 10) call abort()
84     if (any (this_image(A) /= [2,3,10])) call abort()
85
86   case (8)
87     if (this_image(A, dim=2) /= 4) call abort()
88     if (this_image(A, dim=3) /= 10) call abort()
89     i = 2
90     if (this_image(A, dim=i) /= 4) call abort()
91     i = 3
92     if (this_image(A, dim=i) /= 10) call abort()
93     if (any (this_image(A) /= [2,4,10])) call abort()
94 end select
95
96
97 allocate (b(3)[-1:0,2:4,*])
98
99 select case (this_image())
100   case (1)
101     if (this_image(B, dim=1) /= -1) call abort()
102     if (this_image(B, dim=2) /= 2) call abort()
103     if (this_image(B, dim=3) /= 1) call abort()
104     i = 1
105     if (this_image(B, dim=i) /= -1) call abort()
106     i = 2
107     if (this_image(B, dim=i) /= 2) call abort()
108     i = 3
109     if (this_image(B, dim=i) /= 1) call abort()
110     if (any (this_image(B) /= [-1,2,1])) call abort()
111
112   case (2)
113     if (this_image(B, dim=1) /= 0) call abort()
114     if (this_image(B, dim=2) /= 2) call abort()
115     if (this_image(B, dim=3) /= 1) call abort()
116     i = 1
117     if (this_image(B, dim=i) /= 0) call abort()
118     i = 2
119     if (this_image(B, dim=i) /= 2) call abort()
120     i = 3
121     if (this_image(B, dim=i) /= 1) call abort()
122     if (any (this_image(B) /= [0,2,1])) call abort()
123
124   case (3)
125     if (this_image(B, dim=1) /= -1) call abort()
126     if (this_image(B, dim=2) /= 3) call abort()
127     if (this_image(B, dim=3) /= 1) call abort()
128     i = 1
129     if (this_image(B, dim=i) /= -1) call abort()
130     i = 2
131     if (this_image(B, dim=i) /= 3) call abort()
132     i = 3
133     if (this_image(B, dim=i) /= 1) call abort()
134     if (any (this_image(B) /= [-1,3,1])) call abort()
135
136   case (4)
137     if (this_image(B, dim=1) /= 0) call abort()
138     if (this_image(B, dim=2) /= 3) call abort()
139     if (this_image(B, dim=3) /= 1) call abort()
140     i = 1
141     if (this_image(B, dim=i) /= 0) call abort()
142     i = 2
143     if (this_image(B, dim=i) /= 3) call abort()
144     i = 3
145     if (this_image(B, dim=i) /= 1) call abort()
146     if (any (this_image(B) /= [0,3,1])) call abort()
147
148   case (5)
149     if (this_image(B, dim=1) /= -1) call abort()
150     if (this_image(B, dim=2) /= 4) call abort()
151     if (this_image(B, dim=3) /= 1) call abort()
152     i = 1
153     if (this_image(B, dim=i) /= -1) call abort()
154     i = 2
155     if (this_image(B, dim=i) /= 4) call abort()
156     i = 3
157     if (this_image(B, dim=i) /= 1) call abort()
158     if (any (this_image(B) /= [-1,4,1])) call abort()
159
160   case (6)
161     if (this_image(B, dim=1) /= 0) call abort()
162     if (this_image(B, dim=2) /= 4) call abort()
163     if (this_image(B, dim=3) /= 1) call abort()
164     i = 1
165     if (this_image(B, dim=i) /= 0) call abort()
166     i = 2
167     if (this_image(B, dim=i) /= 4) call abort()
168     i = 3
169     if (this_image(B, dim=i) /= 1) call abort()
170     if (any (this_image(B) /= [0,4,1])) call abort()
171
172   case (7)
173     if (this_image(B, dim=1) /= -1) call abort()
174     if (this_image(B, dim=2) /= 2) call abort()
175     if (this_image(B, dim=3) /= 2) call abort()
176     i = 1
177     if (this_image(B, dim=i) /= -1) call abort()
178     i = 2
179     if (this_image(B, dim=i) /= 2) call abort()
180     i = 3
181     if (this_image(B, dim=i) /= 2) call abort()
182     if (any (this_image(B) /= [-1,2,2])) call abort()
183
184   case (8)
185     if (this_image(B, dim=1) /= 0) call abort()
186     if (this_image(B, dim=2) /= 2) call abort()
187     if (this_image(B, dim=3) /= 2) call abort()
188     i = 1
189     if (this_image(B, dim=i) /= 0) call abort()
190     i = 2
191     if (this_image(B, dim=i) /= 2) call abort()
192     i = 3
193     if (this_image(B, dim=i) /= 2) call abort()
194     if (any (this_image(B) /= [0,2,2])) call abort()
195 end select
196
197 end