OSDN Git Service

2011-08-18 Tobias Burnus <burnus@net-b.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / array_constructor_11.f90
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
10
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" }
14
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" }
18
19     call test (1, order, 3,  (/ (i, i = 1, order, 3) /))
20     call test (order, 1, -3, (/ (i, i = order, 1, -3) /))
21
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) /))
28
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
33
34   end subroutine build
35
36   subroutine test (from, to, step, values)
37     integer, dimension (:) :: values
38     integer :: from, to, step, last, i
39
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