1! { dg-do run }
2!
3! PR fortran/44360
4!
5! Test-case based on a contribution of Vittorio Zecca.
6!
7! The used subroutine was not the use-associated but the host associated one!
8! The use-associated function/variable were already working properly.
9!
10module m
11  integer :: var = 43
12contains
13 integer function fun()
14   fun = 42
15 end function fun
16 subroutine fun2()
17   var = 44
18 end subroutine fun2
19end module m
20
21module m2
22  integer :: var = -2
23contains
24 subroutine test()
25   ! All procedures/variables below refer to the ones in module "m"
26   ! and not to the siblings in this module "m2".
27   use m
28   if (fun() /= 42) call abort()
29   if (var /= 43) call abort()
30   call fun2()
31   if (var /= 44) call abort()
32 end subroutine test
33 integer function fun()
34   call abort()
35   fun = -3
36 end function fun
37 subroutine fun2()
38   call abort()
39 end subroutine fun2
40end module m2
41
42use m2
43call test()
44end
45