1! { dg-do compile }
2! Tests the fix for PR28959 in which interface derived types were
3! not always being associated.
4!
5! Contributed by Salvatore Filippone  <sfilippone@uniroma2.it>
6!
7module derived_type_mod
8
9  type foo_dtype
10    integer, pointer :: v1(:)=>null()
11  end type foo_dtype
12
13
14end module derived_type_mod
15
16
17Module tools
18
19  interface foo_d_sub
20     subroutine cdalv(m, v, i, desc_a, info, flag)
21       use derived_type_mod
22       Integer, intent(in)               :: m,i, v(:)
23       integer, intent(in), optional     :: flag
24       integer, intent(out)              :: info
25       Type(foo_dtype), intent(out)  :: desc_a
26     end subroutine cdalv
27  end interface
28
29end module tools
30
31
32
33subroutine foo_bar(a,p,info)
34  use derived_type_mod
35  implicit none
36
37  type(foo_dtype), intent(in)            :: a
38  type(foo_dtype), intent(inout)         :: p
39  integer, intent(out)                   :: info
40
41  info=0
42
43  call inner_sub(info)
44
45
46  return
47
48
49contains
50
51  subroutine inner_sub(info)
52    use tools
53    implicit none
54
55    integer, intent(out)   :: info
56
57    integer :: i, nt,iv(10)
58
59    i  = 0
60    nt = 1
61
62    call foo_d_sub(nt,iv,i,p,info,flag=1)
63
64    return
65
66
67  end subroutine inner_sub
68
69
70
71end subroutine foo_bar
72