annotate gcc/testsuite/gfortran.dg/bound_9.f90 @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do run }
kono
parents:
diff changeset
2 ! { dg-options "-fdump-tree-original" }
kono
parents:
diff changeset
3 ! Check for different combinations of lbound for dummy arrays,
kono
parents:
diff changeset
4 ! stressing empty arrays. The assignments with "one =" should
kono
parents:
diff changeset
5 ! be simplified at compile time.
kono
parents:
diff changeset
6 module tst
kono
parents:
diff changeset
7 implicit none
kono
parents:
diff changeset
8 contains
kono
parents:
diff changeset
9 subroutine foo (a, b, one, m)
kono
parents:
diff changeset
10 integer, dimension(:), intent(in) :: a
kono
parents:
diff changeset
11 integer, dimension (-2:), intent(in) :: b
kono
parents:
diff changeset
12 integer, intent(out) :: one, m
kono
parents:
diff changeset
13 one = lbound(a,1)
kono
parents:
diff changeset
14 m = lbound(b,1)
kono
parents:
diff changeset
15 end subroutine foo
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 subroutine bar (a, b, n, m)
kono
parents:
diff changeset
18 integer, dimension(:), allocatable, intent(inout) :: a
kono
parents:
diff changeset
19 integer, dimension(:), pointer, intent(inout) :: b
kono
parents:
diff changeset
20 integer, intent(out) :: n, m
kono
parents:
diff changeset
21 n = lbound(a,1)
kono
parents:
diff changeset
22 m = lbound(b,1)
kono
parents:
diff changeset
23 end subroutine bar
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 subroutine baz (a, n, m, s)
kono
parents:
diff changeset
26 integer, intent(in) :: n,m
kono
parents:
diff changeset
27 integer, intent(out) :: s
kono
parents:
diff changeset
28 integer, dimension(n:m) :: a
kono
parents:
diff changeset
29 s = lbound(a,1)
kono
parents:
diff changeset
30 end subroutine baz
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 subroutine qux (a, s, one)
kono
parents:
diff changeset
33 integer, intent(in) :: s
kono
parents:
diff changeset
34 integer, dimension(s) :: a
kono
parents:
diff changeset
35 integer, intent(out) :: one
kono
parents:
diff changeset
36 one = lbound(a,1)
kono
parents:
diff changeset
37 end subroutine qux
kono
parents:
diff changeset
38 end module tst
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 program main
kono
parents:
diff changeset
41 use tst
kono
parents:
diff changeset
42 implicit none
kono
parents:
diff changeset
43 integer, dimension(3), target :: a, b
kono
parents:
diff changeset
44 integer, dimension(0) :: empty
kono
parents:
diff changeset
45 integer, dimension(:), allocatable :: x
kono
parents:
diff changeset
46 integer, dimension(:), pointer :: y
kono
parents:
diff changeset
47 integer :: n,m
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 call foo(a,b,n,m)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
51 if (n .ne. 1 .or. m .ne. -2) STOP 1
111
kono
parents:
diff changeset
52 call foo(a(2:0), empty, n, m)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
53 if (n .ne. 1 .or. m .ne. 1) STOP 2
111
kono
parents:
diff changeset
54 call foo(empty, a(2:0), n, m)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
55 if (n .ne. 1 .or. m .ne. 1) STOP 3
111
kono
parents:
diff changeset
56 allocate (x(0))
kono
parents:
diff changeset
57 y => a(3:2)
kono
parents:
diff changeset
58 call bar (x, y, n, m)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
59 if (n .ne. 1 .or. m .ne. 1) STOP 4
111
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 call baz(a,3,2,n)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
62 if (n .ne. 1) STOP 5
111
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 call baz(a,2,3,n)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
65 if (n .ne. 2) STOP 6
111
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 call qux(a, -3, n)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
68 if (n .ne. 1) STOP 7
111
kono
parents:
diff changeset
69 end program main
kono
parents:
diff changeset
70 ! { dg-final { scan-tree-dump-times "\\*one = 1" 2 "original" } }