1 ! Like array_constructor_6.f90, but check iterators with non-default stride,
2 ! including combinations which lead to zero-length vectors.
8 subroutine build (order
)
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) /)) ! { dg-warning "will be executed zero times" }
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) /)) ! { dg-warning "will be executed zero times" }
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) /)) ! { dg-warning "will be executed zero times" }
25 call test (1, 2000, -5, (/ (i
, i
= 1, 2000, -5), (i
, i
= order
, 0, 1) /)) ! { dg-warning "will be executed zero times" }
26 call test (3000, 99, 4, (/ (i
, i
= 3000, 99, 4), (i
, i
= order
, 0, 1) /)) ! { dg-warning "will be executed zero times" }
27 call test (400, 77, -39, (/ (i
, i
= 400, 77, -39), (i
, i
= order
, 0, 1) /))
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) /))
36 subroutine test (from
, to, step
, values
)
37 integer, dimension (:) :: values
38 integer :: from
, to, step
, last
, i
43 if (values (last
) .ne
. i
) call abort
45 if (size (values
, dim
= 1) .ne
. last
) call abort