aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gfortran.dg/used_types_10.f90
blob: 4fbdc8e68e7399af47385f753309acd77ae0c747 (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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
! { dg-do compile }
! Tests the fix for PR28959 in which interface derived types were
! not always being associated.
!
! Contributed by Salvatore Filippone  <sfilippone@uniroma2.it>
!
module derived_type_mod

  type foo_dtype
    integer, pointer :: v1(:)=>null()
  end type foo_dtype
  

end module derived_type_mod


Module tools

  interface foo_d_sub
     subroutine cdalv(m, v, i, desc_a, info, flag)
       use derived_type_mod
       Integer, intent(in)               :: m,i, v(:)
       integer, intent(in), optional     :: flag
       integer, intent(out)              :: info
       Type(foo_dtype), intent(out)  :: desc_a
     end subroutine cdalv
  end interface

end module tools



subroutine foo_bar(a,p,info)
  use derived_type_mod
  implicit none

  type(foo_dtype), intent(in)            :: a
  type(foo_dtype), intent(inout)         :: p
  integer, intent(out)                   :: info

  info=0

  call inner_sub(info)
    

  return


contains

  subroutine inner_sub(info)
    use tools
    implicit none 

    integer, intent(out)   :: info

    integer :: i, nt,iv(10)
    
    i  = 0
    nt = 1
    
    call foo_d_sub(nt,iv,i,p,info,flag=1)
    
    return


  end subroutine inner_sub



end subroutine foo_bar