./:
[official-gcc.git] / gcc / testsuite / gfortran.dg / array_constructor_11.f90
blob395d2927b9efe7faf4838fc9fc8a8d917cbb21e3
1 ! Like array_constructor_6.f90, but check iterators with non-default stride,
2 ! including combinations which lead to zero-length vectors.
3 ! { dg-do run }
4 program main
5 implicit none
6 call build (77)
7 contains
8 subroutine build (order)
9 integer :: order, i, j
11 call test (1, 11, 3, (/ (i, i = 1, 11, 3) /))
12 call test (3, 20, 2, (/ (i, i = 3, 20, 2) /))
13 call test (4, 0, 11, (/ (i, i = 4, 0, 11) /))
15 call test (110, 10, -3, (/ (i, i = 110, 10, -3) /))
16 call test (200, 20, -12, (/ (i, i = 200, 20, -12) /))
17 call test (29, 30, -6, (/ (i, i = 29, 30, -6) /))
19 call test (1, order, 3, (/ (i, i = 1, order, 3) /))
20 call test (order, 1, -3, (/ (i, i = order, 1, -3) /))
22 ! Triggers compile-time iterator calculations in trans-array.c
23 call test (1, 1000, 2, (/ (i, i = 1, 1000, 2), (i, i = order, 0, 1) /))
24 call test (1, 0, 3, (/ (i, i = 1, 0, 3), (i, i = order, 0, 1) /))
25 call test (1, 2000, -5, (/ (i, i = 1, 2000, -5), (i, i = order, 0, 1) /))
26 call test (3000, 99, 4, (/ (i, i = 3000, 99, 4), (i, i = order, 0, 1) /))
27 call test (400, 77, -39, (/ (i, i = 400, 77, -39), (i, i = order, 0, 1) /))
29 do j = -10, 10
30 call test (order + j, order, 5, (/ (i, i = order + j, order, 5) /))
31 call test (order + j, order, -5, (/ (i, i = order + j, order, -5) /))
32 end do
34 end subroutine build
36 subroutine test (from, to, step, values)
37 integer, dimension (:) :: values
38 integer :: from, to, step, last, i
40 last = 0
41 do i = from, to, step
42 last = last + 1
43 if (values (last) .ne. i) call abort
44 end do
45 if (size (values, dim = 1) .ne. last) call abort
46 end subroutine test
47 end program main