1! { dg-do run }
2! { dg-options "-Wreturn-type" }
3!
4! Check that pr58586 is fixed now.
5! Based on a contribution by Vladimir Fuka
6! Contibuted by Andre Vehreschild
7
8program test_pr58586
9  implicit none
10
11  type :: a
12  end type
13
14  type :: c
15     type(a), allocatable :: a
16  end type
17
18  type :: b
19     integer, allocatable :: a
20  end type
21
22  type :: t
23    integer, allocatable :: comp
24  end type
25  type :: u
26    type(t), allocatable :: comp
27  end type
28
29
30  ! These two are merely to check, if compilation works
31  call add(b())
32  call add(b(null()))
33
34  ! This needs to execute, to see whether the segfault at runtime is resolved
35  call add_c(c_init())
36
37  call sub(u())
38contains
39
40  subroutine add (d)
41    type(b), value :: d
42  end subroutine
43
44  subroutine add_c (d)
45    type(c), value :: d
46  end subroutine
47
48  type(c) function c_init()  ! { dg-warning "not set" }
49  end function
50
51  subroutine sub(d)
52    type(u), value :: d
53  end subroutine
54end program test_pr58586
55
56