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
72
|
! { 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
! { dg-final { cleanup-modules "derived_type_mod tools" } }
|