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