aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gfortran.dg/used_types_11.f90
blob: b3f4eaa56e4a4a4bc2bc758c82a0fab104730ac5 (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
! { dg-do compile }
! Tests the patch for PR 29641, in which an ICE would occur with
! the ordering of USE statements below.
!
! Contributed by Jakub Jelinek <jakub@gcc.gnu.org>
!
module A
  type :: T
    integer :: u
  end type T
end module A

module B
contains
  function foo()
    use A
    type(T), pointer :: foo
    nullify (foo)
  end function foo
end module B

subroutine bar()
  use B             ! The order here is important
  use A             ! If use A comes before use B, it works
  type(T), pointer :: x
  x => foo()
end subroutine bar

  use B
  use A
  type(T), pointer :: x
  type(T), target  :: y
  x => y
  print *, associated (x)
  x => foo ()
  print *, associated (x)
end