aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gfortran.dg/used_types_20.f90
blob: 272c0e8aacd9ce76c37824cb0b23b7eb7af72025 (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
! { dg-do compile }
! Tests the fix for PR36366 a regression in which the order of USE statements
! in 'test2' would cause the result of 'test1' not to have a reference to
! the derived type 'inner'.
!
! Contributed by Jakub Jelinek <jakub@gcc.gnu.org>
!
MODULE types
  IMPLICIT NONE
  TYPE :: inner
    INTEGER, POINTER :: i(:)
  END TYPE inner

  TYPE :: outer
    TYPE(inner), POINTER :: inr(:)
  END TYPE outer
END MODULE types

MODULE mymod
  IMPLICIT NONE
CONTAINS
  FUNCTION test1()
    USE types
    IMPLICIT NONE
    TYPE(outer), POINTER :: test1
    NULLIFY(test1)
  END FUNCTION test1
END MODULE mymod

MODULE test
  IMPLICIT NONE
CONTAINS

  SUBROUTINE test2(a)
    USE mymod
    USE types
    IMPLICIT NONE
    TYPE(outer), INTENT(INOUT) :: a
    INTEGER :: i
    i = a%inr(1)%i(1)
  END SUBROUTINE test2

  SUBROUTINE test3(a)
    USE types
    IMPLICIT NONE
    TYPE(outer), INTENT(IN) :: a
  END SUBROUTINE test3
END MODULE test