OSDN Git Service

2007-07-09 Thomas Koenig <tkoenig@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / array_initializer_1.f90
1 ! { dg-do run }\r
2 ! Check the fix for PR16206, in which array sections would not work\r
3 ! in array initializers. Use of implied do loop variables for indices\r
4 ! and substrings, with and without implied do loops, were fixed at the\r
5 ! same time.\r
6 !\r
7 ! Contributed by Paul Thomas   <pault@gcc.gnu.org>\r
8 ! based on testcase from Harald Anlauf  <anlauf@gmx.de>  \r
9 !\r
10   real, parameter :: x(4,4) = reshape((/(i, i = 1, 16)/), (/4,4/))\r
11   real, parameter :: y(4) = (/ x(1:2, 2), x(3:4, 4)/)\r
12   real, parameter :: z(2) = x(2:3, 3) + 1\r
13   real, parameter :: r(6) = (/(x(i:i +1, i), i = 1,3)/)\r
14   real, parameter :: s(12) = (/((x(i, i:j-1:-1), i = 3,4), j = 2,3)/)\r
15   real, parameter :: t(8) = (/(z, &\r
16         real (i)**3, y(i), i = 2, 3)/) ! { dg-warning "nonstandard" }\r
17 \r
18   integer, parameter :: ii = 4\r
19 \r
20   character(4), parameter :: chr(4) = (/"abcd", "efgh", "ijkl", "mnop"/)\r
21   character(4), parameter :: chrs = chr(ii)(2:3)//chr(2)(ii-3:ii-2) \r
22   character(4), parameter :: chrt(2) = (/chr(2:2)(2:3), chr(ii-1)(3:ii)/)\r
23   character(2), parameter :: chrx(2) = (/(chr(i)(i:i+1), i=2,3)/)\r
24 \r
25   if (any (y .ne. (/5., 6., 15., 16./))) call abort ()\r
26   if (any (z .ne. (/11., 12./))) call abort ()\r
27   if (any (r .ne. (/1., 2., 6., 7., 11., 12./))) call abort ()\r
28   if (any (s .ne. (/11., 7., 3., 16., 12., 8., 4., &\r
29                     11., 7.,     16., 12., 8. /))) call abort ()\r
30 \r
31   if (any (t .ne. (/11., 12., 8., 6., 11., 12., 27., 15. /))) call abort ()\r
32 \r
33   if (chrs .ne. "noef") call abort ()\r
34   if (any (chrt .ne. (/"fg", "kl"/))) call abort ()\r
35   if (any (chrx .ne. (/"fg", "kl"/))) call abort ()\r
36 end\r