blob: 7550368bcd93a087725c019c04be799e291cd202 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
! { dg-do run }
!
! This tests the improved version of the patch for PR16861. Testing
! after committing the first version, revealed that this test did
! not work but was not regtested for, either.
!
! Contributed by Paul Thomas <pault@gcc.gnu.org>
!
MODULE foo
TYPE type1
INTEGER i1
END TYPE type1
END MODULE
MODULE bar
CONTAINS
SUBROUTINE sub1 (x, y)
USE foo
TYPE (type1) :: x
INTEGER :: y(x%i1)
y = 1
END SUBROUTINE SUB1
SUBROUTINE sub2 (u, v)
USE foo
TYPE (type1) :: u
INTEGER :: v(u%i1)
v = 2
END SUBROUTINE SUB2
END MODULE
MODULE foobar
USE foo
USE bar
CONTAINS
SUBROUTINE sub3 (s, t)
USE foo
TYPE (type1) :: s
INTEGER :: t(s%i1)
t = 3
END SUBROUTINE SUB3
END MODULE foobar
PROGRAM use_foobar
USE foo
USE foobar
INTEGER :: j(3) = 0
TYPE (type1) :: z
z%i1 = 3
CALL sub1 (z, j)
z%i1 = 2
CALL sub2 (z, j)
z%i1 = 1
CALL sub3 (z, j)
IF (ALL (j.ne.(/3,2,1/))) CALL abort ()
END PROGRAM use_foobar
! { dg-final { cleanup-modules "foo bar foobar" } }
|